Cavoke  1.1.0
A Platform for creating and hosting multiplayer turn-based board games
Loading...
Searching...
No Matches
sessions_controller.h
1#ifndef CAVOKE_SESSIONS_CONTROLLER_H
2#define CAVOKE_SESSIONS_CONTROLLER_H
3
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"
9
10namespace cavoke::server::controllers {
11
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;
18
19public:
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);
25
26public:
27 METHOD_LIST_BEGIN
28 ADD_METHOD_TO(SessionsController::create,
29 "/sessions/create",
30 drogon::Post,
31 "AuthFilter");
32 ADD_METHOD_TO(SessionsController::join,
33 "/sessions/{session_id}/join",
34 drogon::Post,
35 "AuthFilter");
36 ADD_METHOD_TO(SessionsController::leave,
37 "/sessions/{session_id}/leave",
38 drogon::Post,
39 "AuthFilter");
40 ADD_METHOD_TO(SessionsController::change_role,
41 "/sessions/{session_id}/change_role",
42 drogon::Post,
43 "AuthFilter");
44 ADD_METHOD_TO(SessionsController::get_info,
45 "/sessions/{session_id}/get_info",
46 drogon::Get,
47 "AuthFilter");
48 ADD_METHOD_TO(SessionsController::start,
49 "/sessions/{session_id}/start",
50 drogon::Post,
51 "AuthFilter");
52 ADD_METHOD_TO(SessionsController::validate,
53 "/sessions/{session_id}/validate",
54 drogon::Post,
55 "AuthFilter");
56 METHOD_LIST_END
57
58protected:
59 void create(
60 const drogon::HttpRequestPtr &req,
61 std::function<void(const drogon::HttpResponsePtr &)> &&callback);
62
63 void join(const drogon::HttpRequestPtr &req,
64 std::function<void(const drogon::HttpResponsePtr &)> &&callback,
65 const std::string &session_id);
66
67 void leave(const drogon::HttpRequestPtr &req,
68 std::function<void(const drogon::HttpResponsePtr &)> &&callback,
69 const std::string &session_id);
70
71 void change_role(
72 const drogon::HttpRequestPtr &req,
73 std::function<void(const drogon::HttpResponsePtr &)> &&callback,
74 const std::string &session_id);
75
76 void validate(
77 const drogon::HttpRequestPtr &req,
78 std::function<void(const drogon::HttpResponsePtr &)> &&callback,
79 const std::string &session_id);
80
81 void start(const drogon::HttpRequestPtr &req,
82 std::function<void(const drogon::HttpResponsePtr &)> &&callback,
83 const std::string &session_id);
84
85 void get_info(
86 const drogon::HttpRequestPtr &req,
87 std::function<void(const drogon::HttpResponsePtr &)> &&callback,
88 const std::string &session_id);
89};
90
91} // namespace cavoke::server::controllers
92#endif // CAVOKE_SESSIONS_CONTROLLER_H