Cavoke  1.1.0
A Platform for creating and hosting multiplayer turn-based board games
Loading...
Searching...
No Matches
rooms_controller.h
1#ifndef CAVOKE_ROOMS_CONTROLLER_H
2#define CAVOKE_ROOMS_CONTROLLER_H
3
4#include <drogon/HttpController.h>
5#include "model/rooms/rooms_storage.h"
6
7namespace cavoke::server::controllers {
8
9class RoomsController : public drogon::HttpController<RoomsController, false> {
10 std::shared_ptr<model::RoomsStorage> m_rooms_storage;
11 std::shared_ptr<model::GamesStorage> m_games_storage;
12 std::shared_ptr<model::SessionsStorage> m_sessions_storage;
13
14public:
15 RoomsController(std::shared_ptr<model::RoomsStorage> mRoomsStorage,
16 std::shared_ptr<model::GamesStorage> mGamesStorage,
17 std::shared_ptr<model::SessionsStorage> mSessionsStorage);
18
19 METHOD_LIST_BEGIN
20 ADD_METHOD_TO(RoomsController::create_room,
21 "/rooms/create",
22 drogon::Post,
23 "AuthFilter");
24 ADD_METHOD_TO(RoomsController::get_info,
25 "/rooms/{room_id}/get_info",
26 drogon::Get,
27 "AuthFilter");
28 ADD_METHOD_TO(RoomsController::get_info_by_invite_code,
29 "/rooms/get_info_by_invite_code",
30 drogon::Get,
31 "AuthFilter");
32 ADD_METHOD_TO(RoomsController::join,
33 "/rooms/join",
34 drogon::Post,
35 "AuthFilter");
36 ADD_METHOD_TO(RoomsController::leave,
37 "/rooms/{room_id}/leave",
38 drogon::Post,
39 "AuthFilter");
40 ADD_METHOD_TO(RoomsController::create_session,
41 "/rooms/{room_id}/create_session",
42 drogon::Post,
43 "AuthFilter");
44 METHOD_LIST_END
45
46protected:
47 void create_room(
48 const drogon::HttpRequestPtr &req,
49 std::function<void(const drogon::HttpResponsePtr &)> &&callback);
50
51 void create_session(
52 const drogon::HttpRequestPtr &req,
53 std::function<void(const drogon::HttpResponsePtr &)> &&callback,
54 const std::string &room_id);
55
56 void get_info(
57 const drogon::HttpRequestPtr &req,
58 std::function<void(const drogon::HttpResponsePtr &)> &&callback,
59 const std::string &room_id);
60
61 void get_info_by_invite_code(
62 const drogon::HttpRequestPtr &req,
63 std::function<void(const drogon::HttpResponsePtr &)> &&callback);
64
65 void join(const drogon::HttpRequestPtr &req,
66 std::function<void(const drogon::HttpResponsePtr &)> &&callback);
67
68 void leave(const drogon::HttpRequestPtr &req,
69 std::function<void(const drogon::HttpResponsePtr &)> &&callback,
70 const std::string &room_id);
71};
72
73} // namespace cavoke::server::controllers
74
75#endif // CAVOKE_ROOMS_CONTROLLER_H