Files
chores.win-back/app.py
Zev B Averbach 0f1e9273cb first
2020-12-06 23:48:18 +01:00

60 lines
1.7 KiB
Python

import os
from dotenv import load_dotenv, find_dotenv
from faker import Faker
from flask import Flask, jsonify, request
from flask_cors import CORS
from twilio.rest import Client
from twilio.jwt.access_token import AccessToken
from twilio.jwt.access_token.grants import SyncGrant
app = Flask(__name__)
CORS(app)
dotenv_path = os.path.join(os.path.dirname(__file__), '.env')
load_dotenv(dotenv_path, override=True)
fake = Faker()
@app.route('/token', methods=['GET'])
def randomToken():
return generateToken(fake.user_name())
@app.route('/token', methods=['POST'])
def createToken():
# Get the request json or form data
content = request.get_json() or request.form
# get the identity from the request, or make one up
identity = content.get('identity', fake.user_name())
return generateToken(identity)
@app.route('/token/<identity>', methods=['POST', 'GET'])
def token(identity):
return generateToken(identity)
def generateToken(identity):
account_sid = os.environ['TWILIO_ACCOUNT_SID']
api_key = os.environ['TWILIO_API_KEY']
api_secret = os.environ['TWILIO_API_SECRET']
sync_service_sid = os.environ['TWILIO_SYNC_SERVICE_SID']
token = AccessToken(account_sid, api_key, api_secret)
token.identity = identity
sync_grant = SyncGrant(service_sid=sync_service_sid)
token.add_grant(sync_grant)
token = token.to_jwt().decode('utf-8')
return jsonify(identity=identity, token=token)
def provision_sync_default_service():
client = Client(os.environ['TWILIO_API_KEY'], os.environ['TWILIO_API_SECRET'], os.environ['TWILIO_ACCOUNT_SID'])
client.sync.services('default').fetch()
if __name__ == '__main__':
provision_sync_default_service()
app.run(debug=True, host='0.0.0.0', port=5001)