Files
appointment_tool/server.py
2023-01-16 00:30:03 +01:00

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)