1 #ifndef WEBSERVER_CLIENT_H
2 #define WEBSERVER_CLIENT_H
4 #include <net/socket.h>
35 Client(
int socket,
struct sockaddr_in address);
57 void Send(
const atomizes::HTTPMessage& http_response)
const;
64 void Send(
const Json::Value &value)
const;
74 void onRequest(
const atomizes::HTTPMessage& http_request);
87 void requestFile(
const atomizes::HTTPMessage& http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
98 void requestGetPlayerInfo(
const atomizes::HTTPMessage& http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
107 void requestStats(
const atomizes::HTTPMessage& http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
117 void requestClanInfo(
const atomizes::HTTPMessage& http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
126 void requestClanMembers(
const atomizes::HTTPMessage& http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
135 void requestLeaderboard(
const atomizes::HTTPMessage& http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
144 void requestCreateClan(
const atomizes::HTTPMessage& http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
153 void requestUpdateClan(
const atomizes::HTTPMessage& http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
162 void requestDisband(
const atomizes::HTTPMessage& http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
171 void requestChangeRank(
const atomizes::HTTPMessage &http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
180 void requestAddMember(
const atomizes::HTTPMessage &http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
189 void requestDeleteMember(
const atomizes::HTTPMessage& http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
198 void requestClanMessage(
const atomizes::HTTPMessage& http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
207 void requestMeme(
const atomizes::HTTPMessage& http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
217 void requestEmpty(
const atomizes::HTTPMessage& http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
227 void requestAPIServersLive(
const atomizes::HTTPMessage& http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
236 void requestAPIGame(
const atomizes::HTTPMessage& http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
245 void requestAPIGames(
const atomizes::HTTPMessage& http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
254 void requestAPIPlayer(
const atomizes::HTTPMessage& http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
263 void requestAPIClan(
const atomizes::HTTPMessage& http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
272 void requestAPILeaderboard(
const atomizes::HTTPMessage& http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
281 void requestAPILeaderboardClan(
const atomizes::HTTPMessage& http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
290 void requestAPIClanSimulation(
const atomizes::HTTPMessage& http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
300 void requestAPIAdminClients(
const atomizes::HTTPMessage& http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
309 void requestAPIAdminKick(
const atomizes::HTTPMessage& http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
318 void requestAPIAdminMessage(
const atomizes::HTTPMessage& http_request,
const std::string& url_base,
const Util::Url::Variables& url_variables);
349 void _LogTransaction(
const std::string& direction,
const std::string& response)
const;
358 bool _readFile(
const std::string& file_name, std::string& data)
const;
365 void _SendFile(
const std::string& file_name)
const;
392 const Util::Url::Variables &url_variables,
bool is_update =
false);
Represents a clan in the Battlefield game.
Represents a player with extended statistics.
A base class representing a network socket.
void requestAPIAdminKick(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request to kick a client through the API.
void requestAPIClanSimulation(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request for clan simulation through the API.
void requestLeaderboard(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request to get the leaderboard.
static void Heartbeat()
Heartbeat function to manage client connections.
void requestMeme(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request for a meme.
void requestStats(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request for player statistics.
void requestAPIAdminMessage(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request to send a message to a client through the API.
void requestAPIPlayer(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request for a specific player through the API.
Client(int socket, struct sockaddr_in address)
Constructor for Webserver Client.
atomizes::HTTPMessage _defaultResponseHeader(bool isPlainText=true) const
Generate the default HTTP response header.
void onRequest(const atomizes::HTTPMessage &http_request)
Process incoming HTTP request.
void _GetSessionPlayerAndClan(const Util::Url::Variables &url_variables, Battlefield::Clan &clan, Battlefield::Player &player) const
Extract session, player, and clan information from URL variables.
void Disconnect()
Disconnect the client.
void requestAPILeaderboardClan(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request for the clan leaderboard through the API.
void requestClanInfo(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request to get clan information.
void requestAddMember(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request to add a member to a clan.
void requestChangeRank(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request to change a member's rank in a clan.
void requestClanMembers(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request to get clan members.
void requestAPIAdminClients(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request for admin clients through the API.
void requestEmpty(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request for a empty response.
void requestFile(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request for a specific file.
void requestUpdateClan(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request to update a clan.
void requestClanMessage(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request for clan messages.
void Send(const atomizes::HTTPMessage &http_response) const
Send an HTTP response.
void requestAPIServersLive(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request for live servers through the API.
void requestDeleteMember(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request to delete a member from a clan.
void requestAPIGame(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request for a specific game through the API.
void _LogTransaction(const std::string &direction, const std::string &response) const
Log a transaction.
void Listen()
Start listening for incoming requests.
void _SendFile(const std::string &file_name) const
Send a file as an HTTP response.
void requestCreateClan(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request to create a new clan.
bool _readFile(const std::string &file_name, std::string &data) const
Read a file and store its contents in a string.
bool _updateClanInformation(Battlefield::Clan &clan, const Util::Url::Variables &url_variables, bool is_update=false)
Update clan information based on URL variables.
void requestDisband(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request to disband a clan.
~Client()
Destructor for Webserver Client.
void requestAPIClan(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request for a specific clan through the API.
void requestAPILeaderboard(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request for the leaderboard through the API.
void requestGetPlayerInfo(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request to get player information.
void requestAPIGames(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handle a request for multiple games through the API.
void requestAPIAdminPlayerStatsRecalc(const atomizes::HTTPMessage &http_request, const std::string &url_base, const Util::Url::Variables &url_variables)
Handles the API request to recalculate player statistics.