79 lines
2.1 KiB
Python
79 lines
2.1 KiB
Python
import json
|
|
import os
|
|
import uuid
|
|
|
|
from flask import Flask
|
|
from flask import jsonify
|
|
from flask import request
|
|
from flask_cors import CORS, cross_origin
|
|
from flask_httpauth import HTTPTokenAuth
|
|
|
|
from src.db.mongo_manager import MONGO_STORE_MANAGER
|
|
from src.mail.mail_sender import MailSender
|
|
from src.workers.SpeechToText import SpeechToText
|
|
|
|
app = Flask(__name__)
|
|
cors = CORS(app)
|
|
app.config['CORS_HEADERS'] = 'Content-Type'
|
|
auth = HTTPTokenAuth(scheme='Bearer')
|
|
|
|
secret_token = "97e36f7e-340e-4c02-b329-9415faee38c3"
|
|
|
|
|
|
@auth.verify_token
|
|
def verify_token(token):
|
|
return token == secret_token
|
|
|
|
|
|
@app.route('/send-email', methods=['POST'])
|
|
@auth.login_required
|
|
@cross_origin()
|
|
def send_email():
|
|
data_in_json = request.get_json()
|
|
store = data_in_json['store']
|
|
url = data_in_json['url']
|
|
id = data_in_json['id']
|
|
message = data_in_json['message']
|
|
dest_email = data_in_json['dest_email']
|
|
contact_name = data_in_json['contact_name']
|
|
body = message.replace('/client/' + id, url)
|
|
sender = MailSender(dest_email=dest_email, email_body=body, store=store, contact_name=contact_name)
|
|
print("data_in_json is " + json.dumps(data_in_json))
|
|
print("body is " + body)
|
|
sender.send()
|
|
return '', 204
|
|
|
|
|
|
@app.route('/accepted-list', methods=['GET'])
|
|
@auth.login_required
|
|
@cross_origin()
|
|
def get_accepted_contacts():
|
|
day = request.args.get('day')
|
|
print(day)
|
|
accepted_list = []
|
|
for accepted_contact in MONGO_STORE_MANAGER.get_all_accepted_appointments_for_day(day):
|
|
accepted_contact.type = str(accepted_contact.type)
|
|
accepted_list.append(accepted_contact)
|
|
return jsonify(accepted_list)
|
|
|
|
|
|
@app.route('/', methods=['POST'])
|
|
@auth.login_required
|
|
@cross_origin()
|
|
def post():
|
|
file_name = str(uuid.uuid4()) + ".wav"
|
|
with open(file_name, "wb") as vid:
|
|
vid.write(request.data)
|
|
speech_to_text = SpeechToText()
|
|
result = speech_to_text.to_text(file_name)
|
|
app.logger.info(result)
|
|
try:
|
|
os.remove(file_name)
|
|
except OSError:
|
|
app.logger.info(OSError)
|
|
return jsonify(result)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
app.run(host='0.0.0.0', port=8000, debug=False)
|