This commit is contained in:
Zev B Averbach
2020-12-06 23:48:18 +01:00
commit 0f1e9273cb
3 changed files with 85 additions and 0 deletions

6
.gitignore vendored Normal file
View File

@@ -0,0 +1,6 @@
tags
__pycache__
*.swo
*.swp
venv/
.env

59
app.py Normal file
View File

@@ -0,0 +1,59 @@
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)

20
requirements.txt Normal file
View File

@@ -0,0 +1,20 @@
certifi==2020.12.5
chardet==3.0.4
click==7.1.2
Faker==3.0.1
Flask==1.1.2
Flask-Cors==3.0.9
idna==2.10
itsdangerous==1.1.0
Jinja2==2.11.2
MarkupSafe==1.1.1
PyJWT==1.7.1
python-dateutil==2.8.1
python-dotenv==0.15.0
pytz==2020.4
requests==2.25.0
six==1.15.0
text-unidecode==1.3
twilio==6.48.0
urllib3==1.26.2
Werkzeug==1.0.1