import os, pika, json from flask import Flask, request from translator_svc import translator from submit_svc import submit from notification_svc import notifier from spreadhseet_svc import spreadsheet server = Flask(__name__) connection = pika.BlockingConnection(pika.ConnectionParameters("rabbitmq")) channel = connection.channel() @server.route("/translate", methods=["POST"]) def translate(): try: err = translator.translate_text(request, channel) if err != "success": return f"unsuccessful translation, {err}", 401 else: return "your request to the gateway was successfull", 201 except Exception as err: print(f"Translation unsuccessful with error: {err}") return f"Failed To Translate, {err}", 401 @server.route("/submit", methods=["POST"]) def submit_data(): try: validator = submit.DataValidator() data = json.loads(request.data) mobile_number = data.get('mobile_number') salary = data.get('salary') savings = data.get('savings') first_name = data.get('first_name') last_name = data.get('last_name') email = data.get('email') valid, message = validator.validate_data(mobile_number, salary, savings, first_name, last_name, email) if valid: err = submit.submit_data(data, channel) if err: return f"there was an error processing your request, {err}", 400 else: return f"Invalid Data! {message}! Please try again!", 401 return "your request was redirected successfully", 201 except Exception as err: print(err) return f"failed to submit data, {err}", 401 @server.route("/spreadsheet", methods=["POST"]) def upload_to_spreadsheet(): try: err = spreadsheet.upload_data(request, channel) if err != "success": return f"unsuccessful translation, {err}", 401 else: return "success", 201 except Exception as err: print(f"Unsuccessful with error: {err}") return f"Failed To Upload data to spreadsheet, {err}", 401 @server.route("/notify", methods=["POST"]) def notification(): try: err = notifier.send_notification(request, channel) if err != "success": return f"Failed to send notification, {err}", 401 else: return "your request to the gateway was successfull", 201 except Exception as err: print(f"Notification unsuccessful with error: {err}") return f"Failed To Notify, {err}", 401 if __name__ == "__main__": server.run(host="0.0.0.0", port=8080)