atlan-collect / gateway / server.py
server.py
Raw
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)