Cleanup Download.cpp a little bit
This commit is contained in:
parent
4671eb2b35
commit
3cbda2c803
@ -435,7 +435,34 @@ namespace Components
|
|||||||
MongooseLogBuffer.push_back(c);
|
MongooseLogBuffer.push_back(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::optional<std::string> InfoHandler([[maybe_unused]] mg_connection* c, [[maybe_unused]] const mg_http_message* hm)
|
void Download::ReplyError(mg_connection* connection, int code)
|
||||||
|
{
|
||||||
|
std::string msg{};
|
||||||
|
switch(code)
|
||||||
|
{
|
||||||
|
case 400:
|
||||||
|
msg = "Bad request";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 403:
|
||||||
|
msg = "Forbidden";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 404:
|
||||||
|
msg = "Not found";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
mg_http_reply(connection, code, "Content-Type: text/plain\r\n", msg.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void Download::Reply(mg_connection* connection, const std::string& contentType, const std::string& data)
|
||||||
|
{
|
||||||
|
const auto formatted = std::format("Content-Type: {}\r\n", contentType);
|
||||||
|
mg_http_reply(connection, 200, formatted.c_str(), data.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
std::optional<std::string> Download::InfoHandler([[maybe_unused]] mg_connection* c, [[maybe_unused]] const mg_http_message* hm)
|
||||||
{
|
{
|
||||||
if (!(*Game::com_sv_running)->current.enabled)
|
if (!(*Game::com_sv_running)->current.enabled)
|
||||||
{
|
{
|
||||||
@ -492,7 +519,7 @@ namespace Components
|
|||||||
return { out };
|
return { out };
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::optional<std::string> ListHandler([[maybe_unused]] mg_connection* c, [[maybe_unused]] const mg_http_message* hm)
|
std::optional<std::string> Download::ListHandler([[maybe_unused]] mg_connection* c, [[maybe_unused]] const mg_http_message* hm)
|
||||||
{
|
{
|
||||||
static nlohmann::json jsonList;
|
static nlohmann::json jsonList;
|
||||||
static std::filesystem::path fsGamePre;
|
static std::filesystem::path fsGamePre;
|
||||||
@ -540,7 +567,7 @@ namespace Components
|
|||||||
return { out };
|
return { out };
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::optional<std::string> MapHandler([[maybe_unused]] mg_connection* c, [[maybe_unused]] const mg_http_message* hm)
|
std::optional<std::string> Download::MapHandler([[maybe_unused]] mg_connection* c, [[maybe_unused]] const mg_http_message* hm)
|
||||||
{
|
{
|
||||||
static std::string mapNamePre;
|
static std::string mapNamePre;
|
||||||
static nlohmann::json jsonList;
|
static nlohmann::json jsonList;
|
||||||
@ -586,7 +613,7 @@ namespace Components
|
|||||||
return { out };
|
return { out };
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::optional<std::string> FileHandler(mg_connection* c, const mg_http_message* hm)
|
std::optional<std::string> Download::FileHandler(mg_connection* c, const mg_http_message* hm)
|
||||||
{
|
{
|
||||||
std::string url(hm->uri.ptr, hm->uri.len);
|
std::string url(hm->uri.ptr, hm->uri.len);
|
||||||
|
|
||||||
@ -594,7 +621,7 @@ namespace Components
|
|||||||
|
|
||||||
if (url.size() <= 5)
|
if (url.size() <= 5)
|
||||||
{
|
{
|
||||||
mg_http_reply(c, 403, "Content-Type: text/html\r\n", "%s", "400 - Bad requestt");
|
ReplyError(c, 400);
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -620,7 +647,7 @@ namespace Components
|
|||||||
|
|
||||||
if ((!Maps::GetUserMap()->isValid() && !Party::IsInUserMapLobby()) || !isValidFile)
|
if ((!Maps::GetUserMap()->isValid() && !Party::IsInUserMapLobby()) || !isValidFile)
|
||||||
{
|
{
|
||||||
mg_http_reply(c, 403, "Content-Type: text/html\r\n", "%s", "403 - Forbidden");
|
ReplyError(c, 403);
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -630,7 +657,7 @@ namespace Components
|
|||||||
{
|
{
|
||||||
if ((!url.ends_with(".iwd") && url != "mod.ff") || url.find("_svr_") != std::string::npos)
|
if ((!url.ends_with(".iwd") && url != "mod.ff") || url.find("_svr_") != std::string::npos)
|
||||||
{
|
{
|
||||||
mg_http_reply(c, 403, "Content-Type: text/html\r\n", "%s", "403 - Forbidden");
|
ReplyError(c, 403);
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -641,7 +668,7 @@ namespace Components
|
|||||||
std::string file;
|
std::string file;
|
||||||
if ((!isMap && fsGame.empty()) || !Utils::IO::ReadFile(path, &file))
|
if ((!isMap && fsGame.empty()) || !Utils::IO::ReadFile(path, &file))
|
||||||
{
|
{
|
||||||
mg_http_reply(c, 404, "Content-Type: text/html\r\n", "404 - Not Found %s", path.data());
|
ReplyError(c, 404);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -656,7 +683,7 @@ namespace Components
|
|||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::optional<std::string> ServerListHandler([[maybe_unused]] mg_connection* c, [[maybe_unused]] const mg_http_message* hm)
|
std::optional<std::string> Download::ServerListHandler([[maybe_unused]] mg_connection* c, [[maybe_unused]] const mg_http_message* hm)
|
||||||
{
|
{
|
||||||
std::vector<std::string> servers;
|
std::vector<std::string> servers;
|
||||||
|
|
||||||
@ -673,7 +700,7 @@ namespace Components
|
|||||||
return { out };
|
return { out };
|
||||||
}
|
}
|
||||||
|
|
||||||
static void EventHandler(mg_connection* c, const int ev, void* ev_data, [[maybe_unused]] void* fn_data)
|
void Download::EventHandler(mg_connection* c, const int ev, void* ev_data, [[maybe_unused]] void* fn_data)
|
||||||
{
|
{
|
||||||
using callback = std::function<std::optional<std::string>(mg_connection*, const mg_http_message*)>;
|
using callback = std::function<std::optional<std::string>(mg_connection*, const mg_http_message*)>;
|
||||||
|
|
||||||
@ -705,7 +732,7 @@ namespace Components
|
|||||||
{
|
{
|
||||||
if (const auto reply = i->second(c, hm))
|
if (const auto reply = i->second(c, hm))
|
||||||
{
|
{
|
||||||
mg_http_reply(c, 200, "Content-Type: application/json\r\n", "%s", reply.value().data());
|
Reply(c, "application/json", reply.value());
|
||||||
}
|
}
|
||||||
|
|
||||||
handled = true;
|
handled = true;
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
|
struct mg_connection;
|
||||||
|
struct mg_http_message;
|
||||||
|
|
||||||
namespace Components
|
namespace Components
|
||||||
{
|
{
|
||||||
class Download : public Component
|
class Download : public Component
|
||||||
@ -71,6 +75,7 @@ namespace Components
|
|||||||
this->valid_ = false;
|
this->valid_ = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class FileDownload
|
class FileDownload
|
||||||
@ -100,5 +105,14 @@ namespace Components
|
|||||||
static bool DownloadFile(ClientDownload* download, unsigned int index);
|
static bool DownloadFile(ClientDownload* download, unsigned int index);
|
||||||
|
|
||||||
static void LogFn(char c, void* param);
|
static void LogFn(char c, void* param);
|
||||||
|
static void ReplyError(mg_connection* connection, int code);
|
||||||
|
static void Reply(mg_connection* connection, const std::string& contentType, const std::string& data);
|
||||||
|
|
||||||
|
static std::optional<std::string> FileHandler(mg_connection* c, const mg_http_message* hm);
|
||||||
|
static void EventHandler(mg_connection* c, const int ev, void* ev_data, void* fn_data);
|
||||||
|
static std::optional<std::string> ListHandler(mg_connection* c, const mg_http_message* hm);
|
||||||
|
static std::optional<std::string> InfoHandler(mg_connection* c, const mg_http_message* hm);
|
||||||
|
static std::optional<std::string> ServerListHandler(mg_connection* c, const mg_http_message* hm);
|
||||||
|
static std::optional<std::string> MapHandler(mg_connection* c, const mg_http_message* hm);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user