Cavoke  1.1.0
A Platform for creating and hosting multiplayer turn-based board games
Loading...
Searching...
No Matches
statistics_controller.cpp
1#include "statistics_controller.h"
2#include "filters/AuthFilter.h"
3
4namespace cavoke::server::controllers {
5
6StatisticsController::StatisticsController(
7 std::shared_ptr<model::GamesStorage> mGamesStorage,
8 std::shared_ptr<model::StatisticsManager> mStatisticsManager)
9 : m_games_storage(std::move(mGamesStorage)),
10 m_statistics_manager(std::move(mStatisticsManager)) {
11}
12
13void StatisticsController::game_statistics(
14 const drogon::HttpRequestPtr &req,
15 std::function<void(const drogon::HttpResponsePtr &)> &&callback,
16 const std::string &game_id) {
17 if (!m_games_storage->get_game_by_id(game_id).has_value()) {
18 return CALLBACK_STATUS_CODE(k404NotFound);
19 }
20
21 return callback(newNlohmannJsonResponse(
22 m_statistics_manager->get_game_statistics(game_id)));
23}
24
25void StatisticsController::user_statistics(
26 const drogon::HttpRequestPtr &req,
27 std::function<void(const drogon::HttpResponsePtr &)> &&callback,
28 const std::string &user_id) {
29 return callback(newNlohmannJsonResponse(
30 m_statistics_manager->get_user_statistics(user_id)));
31}
32
33void StatisticsController::user_game_statistics(
34 const drogon::HttpRequestPtr &req,
35 std::function<void(const drogon::HttpResponsePtr &)> &&callback,
36 const std::string &user_id,
37 const std::string &game_id) {
38 if (!m_games_storage->get_game_by_id(game_id).has_value()) {
39 return CALLBACK_STATUS_CODE(k404NotFound);
40 }
41
42 return callback(newNlohmannJsonResponse(
43 m_statistics_manager->get_user_game_statistics(user_id, game_id)));
44}
45void StatisticsController::my_user_statistics(
46 const drogon::HttpRequestPtr &req,
47 std::function<void(const drogon::HttpResponsePtr &)> &&callback) {
48 return user_statistics(req, std::move(callback),
50}
51void StatisticsController::my_user_game_statistics(
52 const drogon::HttpRequestPtr &req,
53 std::function<void(const drogon::HttpResponsePtr &)> &&callback,
54 const std::string &game_id) {
55 return user_game_statistics(req, std::move(callback),
56 AuthFilter::get_user_id(req), game_id);
57}
58
59} // namespace cavoke::server::controllers
static std::string get_user_id(const HttpRequestPtr &)
Acquires user_id parsed during AuthFilter's execution.
Definition: AuthFilter.cc:82