from board_mate.message import Configuration, ApiClient, MessageDto, MessageApi, MessagePostRequestDto from flask import jsonify, request from pydantic import StrictStr from src.models.AuthData import AuthData from src.services.mqtt_service import MQTTService import json class MessageController: _client_id : MQTTService = None _auth_data : AuthData = None def __init__(self, app, auth_data : AuthData, host : str): self._register_routes(app) self.config = Configuration(host=host) self.config.verify_ssl=False self._auth_data = auth_data def _register_routes(self, app): app.add_url_rule("/message/send", view_func=self.send, methods=['POST']) def send(self): try : with ApiClient(self.config) as api: req = request.get_json() content = req["content"] timestamp = req["timestamp"] payload = json.dumps({"content": content, "timestamp": timestamp}) print(payload) api.default_headers["Authorization"] = f"Bearer {self._auth_data.get_token()}" message_api = MessageApi(api) new_message = MessagePostRequestDto( content=content, timeStamp=timestamp, clientId=StrictStr(self._auth_data.get_client_id()) ) message_api.post_message(new_message) return jsonify({"success" : True, "message": None}), 200 except Exception as e: print(e) return jsonify({"success" : False, "message" : f"An error occurred : {self._auth_data.get_token()} {self._auth_data.get_client_id()} \n {e}"}), 500