2025-04-12 16:59:43 +02:00
|
|
|
import logging
|
2025-04-12 12:51:13 +02:00
|
|
|
|
2025-04-12 19:05:52 +02:00
|
|
|
from flask import Flask, request
|
2025-04-12 19:02:34 +02:00
|
|
|
from flask_cors import cross_origin
|
2025-04-12 16:59:43 +02:00
|
|
|
|
2025-04-12 12:51:13 +02:00
|
|
|
import config
|
2025-04-12 19:05:52 +02:00
|
|
|
from dto.requests import GameStartRequestDTO, GameDecisionRequestDTO
|
2025-04-12 21:36:09 +02:00
|
|
|
from dto.responses import GameStartResponseWithBotDecisionDTO
|
2025-04-12 16:59:43 +02:00
|
|
|
from services.julius_baer_api_client import JuliusBaerApiClient
|
2025-04-12 02:15:19 +02:00
|
|
|
|
2025-04-11 22:42:54 +02:00
|
|
|
app = Flask(__name__)
|
2025-04-12 16:58:01 +02:00
|
|
|
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - [%(module)s] - %(message)s')
|
2025-04-12 18:45:02 +02:00
|
|
|
jb_client = JuliusBaerApiClient()
|
2025-04-11 22:42:54 +02:00
|
|
|
|
|
|
|
|
2025-04-12 18:45:02 +02:00
|
|
|
@app.route('/new-game', methods=['POST'])
|
2025-04-12 19:02:34 +02:00
|
|
|
@cross_origin() # allow all origins all methods
|
2025-04-12 18:45:02 +02:00
|
|
|
def new_game():
|
2025-04-12 16:37:06 +02:00
|
|
|
game_start_request = GameStartRequestDTO(player_name=config.API_TEAM)
|
|
|
|
res = jb_client.start_game(game_start_request)
|
|
|
|
|
2025-04-12 21:36:09 +02:00
|
|
|
res_with_bot_decision = GameStartResponseWithBotDecisionDTO(
|
|
|
|
message=res.message,
|
|
|
|
session_id=res.session_id,
|
|
|
|
player_id=res.player_id,
|
|
|
|
client_id=res.client_id,
|
|
|
|
client_data=res.client_data,
|
|
|
|
score=res.score,
|
|
|
|
bot_decision="Accept" # TODO: Get decision from bot
|
|
|
|
)
|
|
|
|
|
|
|
|
return res_with_bot_decision.model_dump_json()
|
2025-04-12 12:59:36 +02:00
|
|
|
|
2025-04-12 02:15:19 +02:00
|
|
|
|
2025-04-12 19:05:52 +02:00
|
|
|
@app.route('/next', methods=['POST'])
|
2025-04-12 19:20:39 +02:00
|
|
|
@cross_origin() # allow all origins all methods
|
2025-04-12 19:05:52 +02:00
|
|
|
def next_client():
|
|
|
|
body = request.get_json()
|
|
|
|
|
|
|
|
decision = body.get("decision")
|
|
|
|
client_id = body.get("client_id")
|
|
|
|
session_id = body.get("session_id")
|
|
|
|
|
|
|
|
make_decision_request = GameDecisionRequestDTO(decision=decision, client_id=client_id, session_id=session_id)
|
|
|
|
res = jb_client.send_decision(make_decision_request)
|
|
|
|
|
|
|
|
return res.model_dump_json()
|
|
|
|
|
2025-04-12 18:45:02 +02:00
|
|
|
if __name__ == '__main__':
|
2025-04-11 22:42:54 +02:00
|
|
|
app.run()
|