1#ifndef CAVOKE_SESSIONS_CONTROLLER_H
2#define CAVOKE_SESSIONS_CONTROLLER_H
4#include <drogon/HttpController.h>
5#include "filters/AuthFilter.h"
6#include "model/games/games_storage.h"
7#include "model/logic/game_logic_manager.h"
8#include "model/sessions/sessions_storage.h"
10namespace cavoke::server::controllers {
13 :
public drogon::HttpController<SessionsController, false> {
14 std::shared_ptr<model::GamesStorage> m_games_storage;
15 std::shared_ptr<model::GameLogicManager> m_game_logic_manager;
16 std::shared_ptr<model::GameStateStorage> m_game_state_storage;
17 std::shared_ptr<model::SessionsStorage> m_participation_storage;
21 std::shared_ptr<model::GamesStorage> mGamesStorage,
22 std::shared_ptr<model::GameLogicManager> mGameLogicManager,
23 std::shared_ptr<model::GameStateStorage> mGameStateStorage,
24 std::shared_ptr<model::SessionsStorage> mParticipationStorage);
28 ADD_METHOD_TO(SessionsController::create,
32 ADD_METHOD_TO(SessionsController::join,
33 "/sessions/{session_id}/join",
36 ADD_METHOD_TO(SessionsController::leave,
37 "/sessions/{session_id}/leave",
40 ADD_METHOD_TO(SessionsController::change_role,
41 "/sessions/{session_id}/change_role",
44 ADD_METHOD_TO(SessionsController::get_info,
45 "/sessions/{session_id}/get_info",
48 ADD_METHOD_TO(SessionsController::start,
49 "/sessions/{session_id}/start",
52 ADD_METHOD_TO(SessionsController::validate,
53 "/sessions/{session_id}/validate",
60 const drogon::HttpRequestPtr &req,
61 std::function<
void(
const drogon::HttpResponsePtr &)> &&callback);
63 void join(
const drogon::HttpRequestPtr &req,
64 std::function<
void(
const drogon::HttpResponsePtr &)> &&callback,
65 const std::string &session_id);
67 void leave(
const drogon::HttpRequestPtr &req,
68 std::function<
void(
const drogon::HttpResponsePtr &)> &&callback,
69 const std::string &session_id);
72 const drogon::HttpRequestPtr &req,
73 std::function<
void(
const drogon::HttpResponsePtr &)> &&callback,
74 const std::string &session_id);
77 const drogon::HttpRequestPtr &req,
78 std::function<
void(
const drogon::HttpResponsePtr &)> &&callback,
79 const std::string &session_id);
81 void start(
const drogon::HttpRequestPtr &req,
82 std::function<
void(
const drogon::HttpResponsePtr &)> &&callback,
83 const std::string &session_id);
86 const drogon::HttpRequestPtr &req,
87 std::function<
void(
const drogon::HttpResponsePtr &)> &&callback,
88 const std::string &session_id);