Files
board-mate/api-customer/app.py
2026-01-04 13:48:33 +01:00

54 lines
2.0 KiB
Python

import json
import os
from dotenv import load_dotenv
from flask import Flask
from src.controllers.AuthController import AuthController
from src.controllers.ClientController import ClientController
from src.controllers.message_controller import MessageController
from src.controllers.mqtt_forwarder import create_forwarder
from src.controllers.telemetryController import TelemetryController
from src.models.AuthData import AuthData
from src.services.mongo_service import MongoService
import sys
sys.stdout.reconfigure(line_buffering=True)
load_dotenv()
app = Flask(__name__)
database_uri = os.getenv("MONGO_URI", "mongodb://localhost:27017")
database_name = os.getenv("DATABASE_NAME", "default")
local_broker_address = os.environ.get("LOCAL_BROKER_ADDRESS", "127.0.0.1")
local_broker_port = int(os.environ.get("LOCAL_BROKER_PORT", 1883))
api_broker_address = os.environ.get("API_BROKER_ADDRESS", "127.0.0.1")
api_broker_port = int(os.environ.get("API_BROKER_PORT", 1883))
auth_data = AuthData()
database_service = MongoService(database_uri, database_name)
auth_controller = AuthController(app, auth_data, "https://192.168.15.120:8000")
client_controller = ClientController(app, auth_data, "https://192.168.15.120:8000")
message_controller = MessageController(app, auth_data, "https://192.168.15.120:8000", database_service)
telemetry_controller = TelemetryController(app, database_service)
def handle_login(data):
local_broker, api_broker, forwarder = create_forwarder(data,
local_broker_address, local_broker_port,
api_broker_address, api_broker_port, database_service)
client_id = data.get_client_id()
api_broker.subscribe(f"/chat/{client_id}/message", message_controller.handle_message_received)
forwarder.start(f"/customer/telemetry/#", f"/board-mate/{client_id}/telemetry", api_broker.publish)
if __name__ == '__main__':
auth_controller.set_on_login(handle_login)
app.run(host="0.0.0.0", port=5000, debug=True, use_reloader=False)