Cavoke  1.1.0
A Platform for creating and hosting multiplayer turn-based board games
Loading...
Searching...
No Matches
games_controller.h
1#ifndef CAVOKE_SERVER_GAMES_CONTROLLER_H
2#define CAVOKE_SERVER_GAMES_CONTROLLER_H
3
4#include <drogon/HttpController.h>
5#include "model/games/games_storage.h"
6
7namespace cavoke::server::controllers {
8
9using json = nlohmann::json;
10
11class GamesController : public drogon::HttpController<GamesController, false> {
12 std::shared_ptr<model::GamesStorage> m_games_storage;
13
14public:
15 METHOD_LIST_BEGIN
16 ADD_METHOD_TO(GamesController::games_list,
17 "/games/list",
18 drogon::Get,
19 drogon::Options);
20 ADD_METHOD_TO(GamesController::game_config,
21 "/games/{game_id}/get_config",
22 drogon::Get,
23 drogon::Options);
24 ADD_METHOD_TO(GamesController::game_client_file,
25 "/games/{game_id}/get_client",
26 drogon::Get,
27 drogon::Options);
28 METHOD_LIST_END
29
30 explicit GamesController(
31 std::shared_ptr<model::GamesStorage> games_storage);
32
33protected:
34 void games_list(
35 const drogon::HttpRequestPtr &req,
36 std::function<void(const drogon::HttpResponsePtr &)> &&callback);
37
38 void game_config(
39 const drogon::HttpRequestPtr &req,
40 std::function<void(const drogon::HttpResponsePtr &)> &&callback,
41 const std::string &game_id);
42
43 void game_client_file(
44 const drogon::HttpRequestPtr &req,
45 std::function<void(const drogon::HttpResponsePtr &)> &&callback,
46 const std::string &game_id);
47};
48
49} // namespace cavoke::server::controllers
50#endif // CAVOKE_SERVER_GAMES_CONTROLLER_H