#!/usr/bin/python3 from flask import Flask, make_response, request, redirect import requests as r app = Flask(__name__) database_node_port = 5002 logic_node_port = 5003 database_node = "database:" + str(database_node_port) @app.route('/login', methods=["POST"]) def login(): data = request.get_json() username, password = data["login"], data["password"] correct_password = r.get(f"http://{database_node}/users/{username}/password").json()["data"] if correct_password == password: resp = make_response({"status": "ok"}, 200) resp.set_cookie("session", f"{username}||{password}") return resp else: return make_response({"status": "wrong_creds"}, 401) @app.route('/register', methods=["POST"]) def register(): data = request.get_json() username, password = data["login"], data["password"] resp = r.post(f"http://{database_node}/users/{username}/password", json={"value": password}) if resp.status_code == 200: resp = make_response({"status": "ok"}, 200) resp.set_cookie("session", f"{username}||{password}") return resp else: return make_response({"status": "error"}, resp.status_code) @app.route('/update_personal', methods=["POST"]) def update_personal(): username, password = request.cookies["session"].split("||") correct_password = r.get(f"http://{database_node}/users/{username}/password").json()["data"] if correct_password != password: return redirect(request.headers.get("Origin", "") + "/login.html", code=302) data = request.get_json() name, sname, email = data["first_name"], data["second_name"], data["email"] r.post(f"http://{database_node}/users/{username}/first_name", json={"value": name}) r.post(f"http://{database_node}/users/{username}/second_name", json={"value": sname}) r.post(f"http://{database_node}/users/{username}/email", json={"value": email}) return make_response({"status": "ok"}, 200) @app.route('/send_msg', methods=["POST"]) def send_msg(): username, password = request.cookies["session"].split("||") correct_password = r.get(f"http://{database_node}/users/{username}/password").json()["data"] if correct_password != password: return redirect(request.headers.get("Origin", "") + "/login.html", code=302) r.post(f"http://{database_node}/users/{username}/msg", json={"value": request.get_json()["msg"]}) return make_response({"status": "ok"}, 200) @app.route('/post_comment', methods=["POST"]) def post_comment(): username, password = request.cookies["session"].split("||") correct_password = r.get(f"http://{database_node}/users/{username}/password").json()["data"] if correct_password != password: return redirect(request.headers.get("Origin", "") + "/login.html", code=302) data = request.get_json() img_id, msg = data["img_id"], data["msg"] r.post(f"http://{database_node}/images/{img_id}", json={"value": [username, msg]}) return make_response({"status": "ok"}, 200) if __name__ == '__main__': app.run(host="0.0.0.0", port=logic_node_port)