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)