Fixed warnings

This commit is contained in:
Leonetienne 2021-03-03 19:08:06 +01:00
parent 0be0850bb0
commit 82cdbe7ba3
12 changed files with 121 additions and 86 deletions

View File

@ -65,7 +65,7 @@ std::string DownloadManager::QueueDownload(std::string url, DOWNLOAD_MODE mode)
if ((j.AsJson.DoesExist("duration")) && (j.AsJson["duration"].GetDataType() == JDType::INT)) if ((j.AsJson.DoesExist("duration")) && (j.AsJson["duration"].GetDataType() == JDType::INT))
{ {
newDownload.duration = j["duration"].AsInt; newDownload.duration = (uint32_t)j["duration"].AsInt;
} }
if ((j.AsJson.DoesExist("webpage_url")) && (j.AsJson["webpage_url"].GetDataType() == JDType::STRING)) if ((j.AsJson.DoesExist("webpage_url")) && (j.AsJson["webpage_url"].GetDataType() == JDType::STRING))
@ -104,7 +104,7 @@ void DownloadManager::Update()
std::size_t cachedNumActiveDownloads = GetNumActiveDownloads(); std::size_t cachedNumActiveDownloads = GetNumActiveDownloads();
// Queue next download, if available // Queue next download, if available
if (cachedNumActiveDownloads < XGConfig::downloader.num_threads) if ((long long)cachedNumActiveDownloads < (long long)XGConfig::downloader.num_threads)
{ {
DownloadNext(); DownloadNext();
} }
@ -141,7 +141,8 @@ void DownloadManager::DownloadNext()
break; break;
} }
} }
next->status = DOWNLOAD_STATUS::DOWNLOADING; if (next)
next->status = DOWNLOAD_STATUS::DOWNLOADING;
std::thread* downloadThread = new std::thread([=]() { std::thread* downloadThread = new std::thread([=]() {
DownloadEntry* entry = next; DownloadEntry* entry = next;
@ -360,7 +361,6 @@ bool DownloadManager::ClearDownloadCache()
bool DownloadManager::RemoveFromCacheByID(std::string id) bool DownloadManager::RemoveFromCacheByID(std::string id)
{ {
bool removedAny = false;
std::string filePath = ""; std::string filePath = "";
bool wasFinished = false; bool wasFinished = false;
for (std::size_t i = 0; i < unfinishedCache.size(); i++) for (std::size_t i = 0; i < unfinishedCache.size(); i++)
@ -368,7 +368,6 @@ bool DownloadManager::RemoveFromCacheByID(std::string id)
if (unfinishedCache[i].tubio_id == id) if (unfinishedCache[i].tubio_id == id)
{ {
filePath = unfinishedCache[i].downloaded_filename; filePath = unfinishedCache[i].downloaded_filename;
removedAny = true;
// Edgecase // Edgecase
wasFinished = unfinishedCache[i].status == DOWNLOAD_STATUS::FINISHED; wasFinished = unfinishedCache[i].status == DOWNLOAD_STATUS::FINISHED;
unfinishedCache.erase(unfinishedCache.begin() + i); unfinishedCache.erase(unfinishedCache.begin() + i);
@ -385,7 +384,6 @@ bool DownloadManager::RemoveFromCacheByID(std::string id)
if (saveFileCache[i]["tubio_id"].AsString == id) if (saveFileCache[i]["tubio_id"].AsString == id)
{ {
saveFileCache.RemoveAt(i); saveFileCache.RemoveAt(i);
removedAny = true;
break; break;
} }
} }
@ -395,7 +393,6 @@ bool DownloadManager::RemoveFromCacheByID(std::string id)
if (saveFileCache_Atomic[i].tubio_id == id) if (saveFileCache_Atomic[i].tubio_id == id)
{ {
filePath = saveFileCache_Atomic[i].downloaded_filename; filePath = saveFileCache_Atomic[i].downloaded_filename;
removedAny = true;
wasFinished = saveFileCache_Atomic[i].status == DOWNLOAD_STATUS::FINISHED; wasFinished = saveFileCache_Atomic[i].status == DOWNLOAD_STATUS::FINISHED;
saveFileCache_Atomic.erase(saveFileCache_Atomic.begin() + i); saveFileCache_Atomic.erase(saveFileCache_Atomic.begin() + i);
break; break;
@ -526,7 +523,7 @@ std::vector<DownloadEntry> DownloadManager::ParseJsonArrayToEntries(const JasonP
if ((iter.DoesExist("duration")) && (iter["duration"].GetDataType() == JDType::INT)) if ((iter.DoesExist("duration")) && (iter["duration"].GetDataType() == JDType::INT))
{ {
newEntry.duration = iter["duration"].AsInt; newEntry.duration = (uint32_t)iter["duration"].AsInt;
} }
if ((iter.DoesExist("tubio_id")) && (iter["tubio_id"].GetDataType() == JDType::STRING)) if ((iter.DoesExist("tubio_id")) && (iter["tubio_id"].GetDataType() == JDType::STRING))
@ -680,6 +677,26 @@ bool DownloadManager::shouldClearCacheASAP = false;
Downloader::DownloadEntry::DownloadEntry()
{
// Some initial values
title = "";
description = "";
uploader = "";
duration = -1;
tubio_id = "";
webpage_url = "";
thumbnail_url = "";
downloaded_filename = "";
download_url = "";
status = DOWNLOAD_STATUS::QUEUED;
mode = DOWNLOAD_MODE::AUDIO;
download_progress = 0;
queued_timestamp = 0;
return;
}
JsonBlock DownloadEntry::GetAsJson() JsonBlock DownloadEntry::GetAsJson()
{ {
JsonBlock jb; JsonBlock jb;

View File

@ -27,6 +27,9 @@ namespace Downloader
class DownloadEntry class DownloadEntry
{ {
public: public:
DownloadEntry();
JasonPP::JsonBlock GetAsJson();
std::string title; std::string title;
std::string description; std::string description;
std::string uploader; std::string uploader;
@ -41,7 +44,6 @@ namespace Downloader
int download_progress; int download_progress;
time_t queued_timestamp; time_t queued_timestamp;
JasonPP::JsonBlock GetAsJson();
}; };

View File

@ -68,7 +68,7 @@ void HttpServer::Update()
void HttpServer::ServeStringToConnection(struct mg_connection* c, std::string str, int httpStatusCode) void HttpServer::ServeStringToConnection(struct mg_connection* c, std::string str, int httpStatusCode)
{ {
mg_send_head(c, httpStatusCode, str.length(), "content-type: application/json\nAccess-Control-Allow-Origin: *"); mg_send_head(c, httpStatusCode, str.length(), "content-type: application/json\nAccess-Control-Allow-Origin: *");
mg_printf(c, str.c_str()); mg_printf(c, "%s", str.c_str());
return; return;
} }
@ -114,14 +114,14 @@ void HttpServer::EventHandler(mg_connection* pNc, int ev, void* p)
catch (std::exception& e) catch (std::exception& e)
{ {
Json j; Json j;
j.CloneFrom(RestResponseTemplates::GetByCode(INTERNAL_SERVER_ERROR, e.what())); j.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::INTERNAL_SERVER_ERROR, e.what()));
ServeStringToConnection(pNc, j.Render(), INTERNAL_SERVER_ERROR); ServeStringToConnection(pNc, j.Render(), (int)HTTP_STATUS_CODE::INTERNAL_SERVER_ERROR);
} }
catch (...) catch (...)
{ {
Json j; Json j;
j.CloneFrom(RestResponseTemplates::GetByCode(INTERNAL_SERVER_ERROR, "Das not good")); j.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::INTERNAL_SERVER_ERROR, "Das not good"));
ServeStringToConnection(pNc, j.Render(), INTERNAL_SERVER_ERROR); ServeStringToConnection(pNc, j.Render(), (int)HTTP_STATUS_CODE::INTERNAL_SERVER_ERROR);
} }
break; break;
@ -129,8 +129,8 @@ void HttpServer::EventHandler(mg_connection* pNc, int ev, void* p)
else // Client is not allowed, serve error json else // Client is not allowed, serve error json
{ {
Json j; Json j;
j.CloneFrom(RestResponseTemplates::GetByCode(UNAUTHORIZED, denialReason)); j.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::UNAUTHORIZED, denialReason));
ServeStringToConnection(pNc, j.Render(), UNAUTHORIZED); ServeStringToConnection(pNc, j.Render(), (int)HTTP_STATUS_CODE::UNAUTHORIZED);
} }
} }
@ -158,13 +158,13 @@ void HttpServer::ProcessAPIRequest(mg_connection* pNc, int ev, void* p, std::str
RestQueryHandler::ProcessQuery(peerAddress, requestBody, responseBody, returnCode); RestQueryHandler::ProcessQuery(peerAddress, requestBody, responseBody, returnCode);
Json response(responseBody); Json response(responseBody);
ServeStringToConnection(pNc, response.Render(), returnCode); ServeStringToConnection(pNc, response.Render(), (int)returnCode);
} }
else // return error message for invalid json else // return error message for invalid json
{ {
Json errorJson; Json errorJson;
errorJson.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::BAD_REQUEST, "Received json is fucked")); errorJson.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::BAD_REQUEST, "Received json is fucked"));
ServeStringToConnection(pNc, errorJson.Render(), HTTP_STATUS_CODE::BAD_REQUEST); ServeStringToConnection(pNc, errorJson.Render(), (int)HTTP_STATUS_CODE::BAD_REQUEST);
} }
return; return;
@ -189,15 +189,15 @@ void HttpServer::ServeDownloadeableResource(mg_connection* pNc, int ev, void* p,
else else
{ {
Json j; Json j;
j.CloneFrom(RestResponseTemplates::GetByCode(BAD_REQUEST, "File download not ready!")); j.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::BAD_REQUEST, "File download not ready!"));
ServeStringToConnection(pNc, j.Render(), BAD_REQUEST); ServeStringToConnection(pNc, j.Render(), (int)HTTP_STATUS_CODE::BAD_REQUEST);
} }
} }
else else
{ {
Json j; Json j;
j.CloneFrom(RestResponseTemplates::GetByCode(BAD_REQUEST, "Invalid tubio id!")); j.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::BAD_REQUEST, "Invalid tubio id!"));
ServeStringToConnection(pNc, j.Render(), BAD_REQUEST); ServeStringToConnection(pNc, j.Render(), (int)HTTP_STATUS_CODE::BAD_REQUEST);
} }
return; return;

View File

@ -11,7 +11,7 @@ void Idler::Update()
// Let the processor chill for a second. // Let the processor chill for a second.
// This should reduce the idling-cpu load to near 0% // This should reduce the idling-cpu load to near 0%
#ifdef _WIN #ifdef _WIN
Sleep(SLEEP_TIME * 1e3); // Uses milliseconds Sleep((DWORD)(SLEEP_TIME * 1e3)); // Uses milliseconds
#else #else
usleep(SLEEP_TIME * 1e6); // Uses microseconds usleep(SLEEP_TIME * 1e6); // Uses microseconds
#endif #endif

View File

@ -20,7 +20,7 @@ bool RestQueryHandler::ProcessQuery(const std::string clientAdress, const Json&
if (!ValidateField("request", JDType::STRING, request, responseBody)) if (!ValidateField("request", JDType::STRING, request, responseBody))
{ {
responseCode = BAD_REQUEST; responseCode = HTTP_STATUS_CODE::BAD_REQUEST;
return false; return false;
} }
JsonBlock requestBody = request.AsJson; JsonBlock requestBody = request.AsJson;
@ -49,8 +49,8 @@ bool RestQueryHandler::ProcessQuery(const std::string clientAdress, const Json&
responseBody.CloneFrom(RestResponseTemplates::GetByCode(NOT_FOUND, "The requested request was not found.")); responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::NOT_FOUND, "The requested request was not found."));
responseCode = NOT_FOUND; responseCode = HTTP_STATUS_CODE::NOT_FOUND;
return false; return false;
} }
@ -64,8 +64,8 @@ void RestQueryHandler::PostExit()
bool RestQueryHandler::Example_Foo(const JsonBlock& request, JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode) bool RestQueryHandler::Example_Foo(const JsonBlock& request, JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode)
{ {
responseCode = OK; responseCode = HTTP_STATUS_CODE::OK;
responseBody.CloneFrom(RestResponseTemplates::GetByCode(OK)); responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::OK));
responseBody.Set("message") = "Bar!"; responseBody.Set("message") = "Bar!";
std::cout << "Bar!" << std::endl; std::cout << "Bar!" << std::endl;
return true; return true;
@ -76,7 +76,7 @@ bool RestQueryHandler::QueueDownload(const JsonBlock& request, JsonBlock& respon
if ((!ValidateField("video_url", JDType::STRING, request, responseBody)) || if ((!ValidateField("video_url", JDType::STRING, request, responseBody)) ||
(!ValidateField("mode", JDType::STRING, request, responseBody))) (!ValidateField("mode", JDType::STRING, request, responseBody)))
{ {
responseCode = BAD_REQUEST; responseCode = HTTP_STATUS_CODE::BAD_REQUEST;
return false; return false;
} }
@ -87,8 +87,8 @@ bool RestQueryHandler::QueueDownload(const JsonBlock& request, JsonBlock& respon
else if (modeParam == "audio") mode = DOWNLOAD_MODE::AUDIO; else if (modeParam == "audio") mode = DOWNLOAD_MODE::AUDIO;
else else
{ {
responseCode = BAD_REQUEST; responseCode = HTTP_STATUS_CODE::BAD_REQUEST;
responseBody.CloneFrom(RestResponseTemplates::GetByCode(BAD_REQUEST, "Parameter 'mode' is of wrong value. Should be either 'video' or 'audio'.")); responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::BAD_REQUEST, "Parameter 'mode' is of wrong value. Should be either 'video' or 'audio'."));
return false; return false;
} }
@ -97,8 +97,8 @@ bool RestQueryHandler::QueueDownload(const JsonBlock& request, JsonBlock& respon
std::string tubId = DownloadManager::QueueDownload(videoUrl, mode); std::string tubId = DownloadManager::QueueDownload(videoUrl, mode);
responseCode = OK; responseCode = HTTP_STATUS_CODE::OK;
responseBody.CloneFrom(RestResponseTemplates::GetByCode(OK)); responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::OK));
responseBody.Set("message") = "Download queued!"; responseBody.Set("message") = "Download queued!";
responseBody.Set("queue_position") = (long long int)DownloadManager::GetQueueLength(); responseBody.Set("queue_position") = (long long int)DownloadManager::GetQueueLength();
responseBody.Set("tubio_id") = tubId; responseBody.Set("tubio_id") = tubId;
@ -135,8 +135,8 @@ bool RestQueryHandler::FetchSessionCache(const JsonBlock& request, JsonBlock& re
max_num = request["max_num"].AsInt; max_num = request["max_num"].AsInt;
} }
responseCode = OK; responseCode = HTTP_STATUS_CODE::OK;
responseBody.CloneFrom(RestResponseTemplates::GetByCode(OK)); responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::OK));
JsonArray cache = DownloadManager::GetAlltimeCacheAsJson(max_age, max_num); JsonArray cache = DownloadManager::GetAlltimeCacheAsJson(max_age, max_num);
responseBody.Set("cache_size") = (long long int)cache.Size(); responseBody.Set("cache_size") = (long long int)cache.Size();
responseBody.Set("cache") = cache; responseBody.Set("cache") = cache;
@ -148,8 +148,8 @@ bool RestQueryHandler::FetchAlltimeCache(const JsonBlock& request, JsonBlock& re
//log->cout << "Asking for whole cache..."; //log->cout << "Asking for whole cache...";
//log->Flush(); //log->Flush();
responseCode = OK; responseCode = HTTP_STATUS_CODE::OK;
responseBody.CloneFrom(RestResponseTemplates::GetByCode(OK)); responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::OK));
JsonArray cache = DownloadManager::GetAlltimeCacheAsJson(-1, -1); // Get ALL the data JsonArray cache = DownloadManager::GetAlltimeCacheAsJson(-1, -1); // Get ALL the data
responseBody.Set("cache_size") = (long long int)cache.Size(); responseBody.Set("cache_size") = (long long int)cache.Size();
responseBody.Set("cache") = cache; responseBody.Set("cache") = cache;
@ -164,8 +164,8 @@ bool RestQueryHandler::ClearDownloadCache(const JsonBlock& request, JsonBlock& r
bool wait = !DownloadManager::ClearDownloadCache(); bool wait = !DownloadManager::ClearDownloadCache();
responseCode = OK; responseCode = HTTP_STATUS_CODE::OK;
responseBody.CloneFrom(RestResponseTemplates::GetByCode(OK)); responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::OK));
if (wait) if (wait)
{ {
@ -187,8 +187,8 @@ bool RestQueryHandler::KillYourself(const JsonBlock& request, JsonBlock& respons
log->cout << "Shutting down server upon client request..."; log->cout << "Shutting down server upon client request...";
log->Flush(); log->Flush();
responseCode = OK; responseCode = HTTP_STATUS_CODE::OK;
responseBody.CloneFrom(RestResponseTemplates::GetByCode(OK)); responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::OK));
responseBody.Set("message") = "Goodbye! :3"; responseBody.Set("message") = "Goodbye! :3";
return true; return true;
} }
@ -201,15 +201,15 @@ bool RestQueryHandler::HideConsole(const JsonBlock& request, JsonBlock& response
log->Flush(); log->Flush();
bool didAnythingChange = ConsoleManager::HideConsole(); bool didAnythingChange = ConsoleManager::HideConsole();
responseCode = OK; responseCode = HTTP_STATUS_CODE::OK;
responseBody.CloneFrom(RestResponseTemplates::GetByCode(OK)); responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::OK));
responseBody.Set("message") = (didAnythingChange) ? "Console is now hidden!" : "Console was already hidden!"; responseBody.Set("message") = (didAnythingChange) ? "Console is now hidden!" : "Console was already hidden!";
return true; return true;
} }
else else
{ {
responseCode = NOT_IMPLEMENTED; responseCode = HTTP_STATUS_CODE::NOT_IMPLEMENTED;
responseBody.CloneFrom(RestResponseTemplates::GetByCode(NOT_IMPLEMENTED)); responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::NOT_IMPLEMENTED));
responseBody.Set("message") = "This feature is currently only supported on Windows! Make sure to compile with preprocessor directive _WIN!"; responseBody.Set("message") = "This feature is currently only supported on Windows! Make sure to compile with preprocessor directive _WIN!";
return false; return false;
} }
@ -223,15 +223,15 @@ bool RestQueryHandler::ShowConsole(const JsonBlock& request, JsonBlock& response
log->Flush(); log->Flush();
bool didAnythingChange = ConsoleManager::ShowConsole(); bool didAnythingChange = ConsoleManager::ShowConsole();
responseCode = OK; responseCode = HTTP_STATUS_CODE::OK;
responseBody.CloneFrom(RestResponseTemplates::GetByCode(OK)); responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::OK));
responseBody.Set("message") = (didAnythingChange) ? "Console is now shown!" : "Console was already shown!"; responseBody.Set("message") = (didAnythingChange) ? "Console is now shown!" : "Console was already shown!";
return true; return true;
} }
else else
{ {
responseCode = NOT_IMPLEMENTED; responseCode = HTTP_STATUS_CODE::NOT_IMPLEMENTED;
responseBody.CloneFrom(RestResponseTemplates::GetByCode(NOT_IMPLEMENTED)); responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::NOT_IMPLEMENTED));
responseBody.Set("message") = "This feature is currently only supported on Windows! Make sure to compile with preprocessor directive _WIN!"; responseBody.Set("message") = "This feature is currently only supported on Windows! Make sure to compile with preprocessor directive _WIN!";
return false; return false;
} }
@ -254,8 +254,8 @@ bool RestQueryHandler::GetOSName(const JsonBlock& request, JsonBlock& responseBo
#elif __unix || __unix__ #elif __unix || __unix__
osName = "Unix"; osName = "Unix";
#endif #endif
responseCode = OK; responseCode = HTTP_STATUS_CODE::OK;
responseBody.CloneFrom(RestResponseTemplates::GetByCode(OK)); responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::OK));
responseBody.Set("os_name") = osName; responseBody.Set("os_name") = osName;
return true; return true;
} }
@ -265,8 +265,8 @@ bool RestQueryHandler::FetchSessionLogs(const JsonBlock& request, JsonBlock& res
//log->cout << "Fetching session logs..."; //log->cout << "Fetching session logs...";
//log->Flush(); //log->Flush();
responseCode = OK; responseCode = HTTP_STATUS_CODE::OK;
responseBody.CloneFrom(RestResponseTemplates::GetByCode(OK)); responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::OK));
JsonArray logs = LogHistory::GetCompleteLogHistoryAsJson(time(0) - XGControl::boot_time + 1, -1); JsonArray logs = LogHistory::GetCompleteLogHistoryAsJson(time(0) - XGControl::boot_time + 1, -1);
responseBody.Set("logs_size") = (long long int)logs.Size(); responseBody.Set("logs_size") = (long long int)logs.Size();
responseBody.Set("logs") = logs; responseBody.Set("logs") = logs;
@ -291,8 +291,8 @@ bool RestQueryHandler::FetchAlltimeLogs(const JsonBlock& request, JsonBlock& res
max_num = request["max_num"].AsInt; max_num = request["max_num"].AsInt;
} }
responseCode = OK; responseCode = HTTP_STATUS_CODE::OK;
responseBody.CloneFrom(RestResponseTemplates::GetByCode(OK)); responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::OK));
JsonArray logs = LogHistory::GetCompleteLogHistoryAsJson(max_age, max_num); JsonArray logs = LogHistory::GetCompleteLogHistoryAsJson(max_age, max_num);
responseBody.Set("logs_size") = (long long int)logs.Size(); responseBody.Set("logs_size") = (long long int)logs.Size();
responseBody.Set("logs") = logs; responseBody.Set("logs") = logs;
@ -304,8 +304,8 @@ bool RestQueryHandler::GetDiskUsage(const JsonBlock& request, JsonBlock& respons
log->cout << "Fetching disk usage..."; log->cout << "Fetching disk usage...";
log->Flush(); log->Flush();
responseCode = OK; responseCode = HTTP_STATUS_CODE::OK;
responseBody.CloneFrom(RestResponseTemplates::GetByCode(OK)); responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::OK));
JsonBlock diskUsages; JsonBlock diskUsages;
@ -363,8 +363,8 @@ bool RestQueryHandler::GetDiskUsage(const JsonBlock& request, JsonBlock& respons
bool RestQueryHandler::ClearLogs(const JsonBlock& request, JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode) bool RestQueryHandler::ClearLogs(const JsonBlock& request, JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode)
{ {
responseCode = OK; responseCode = HTTP_STATUS_CODE::OK;
responseBody.CloneFrom(RestResponseTemplates::GetByCode(OK)); responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::OK));
responseBody.Set("message") = "The logs have been cleared."; responseBody.Set("message") = "The logs have been cleared.";
LogHistory::ClearLogHistory(); LogHistory::ClearLogHistory();
@ -385,8 +385,8 @@ bool RestQueryHandler::UpdateYoutubeDL(const JsonBlock& request, JsonBlock& resp
log->cout << " => OK!"; log->cout << " => OK!";
log->Flush(); log->Flush();
responseCode = OK; responseCode = HTTP_STATUS_CODE::OK;
responseBody.CloneFrom(RestResponseTemplates::GetByCode(OK)); responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::OK));
responseBody.Set("message") = "Updated youtube-dl.exe successfully!"; responseBody.Set("message") = "Updated youtube-dl.exe successfully!";
} }
else if (result == "not implemented") else if (result == "not implemented")
@ -395,8 +395,8 @@ bool RestQueryHandler::UpdateYoutubeDL(const JsonBlock& request, JsonBlock& resp
log->Flush(); log->Flush();
log->Flush(); log->Flush();
responseCode = NOT_IMPLEMENTED; responseCode = HTTP_STATUS_CODE::NOT_IMPLEMENTED;
responseBody.CloneFrom(RestResponseTemplates::GetByCode(NOT_IMPLEMENTED)); responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::NOT_IMPLEMENTED));
responseBody.Set("message") = "On linux you have to update youtube-dl yourself since it is a system-wide package handled by various package managers!"; responseBody.Set("message") = "On linux you have to update youtube-dl yourself since it is a system-wide package handled by various package managers!";
} }
else // Some other error else // Some other error
@ -404,8 +404,8 @@ bool RestQueryHandler::UpdateYoutubeDL(const JsonBlock& request, JsonBlock& resp
log->cout << " => urlmon error: " << result; log->cout << " => urlmon error: " << result;
log->Flush(); log->Flush();
responseCode = INTERNAL_SERVER_ERROR; responseCode = HTTP_STATUS_CODE::INTERNAL_SERVER_ERROR;
responseBody.CloneFrom(RestResponseTemplates::GetByCode(INTERNAL_SERVER_ERROR)); responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::INTERNAL_SERVER_ERROR));
responseBody.Set("message") = "Unable do update youtube-dl.exe! See urlmon " + result; responseBody.Set("message") = "Unable do update youtube-dl.exe! See urlmon " + result;
} }
@ -416,7 +416,7 @@ bool RestQueryHandler::RemoveDownloadEntry(const JsonBlock& request, JsonBlock&
{ {
if (!ValidateField("id", JDType::STRING, request, responseBody)) if (!ValidateField("id", JDType::STRING, request, responseBody))
{ {
responseCode = BAD_REQUEST; responseCode = HTTP_STATUS_CODE::BAD_REQUEST;
return false; return false;
} }
@ -427,14 +427,14 @@ bool RestQueryHandler::RemoveDownloadEntry(const JsonBlock& request, JsonBlock&
if (didSucceed) if (didSucceed)
{ {
responseCode = OK; responseCode = HTTP_STATUS_CODE::OK;
responseBody.CloneFrom(RestResponseTemplates::GetByCode(OK)); responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::OK));
responseBody.Set("message") = "Successfully removed."; responseBody.Set("message") = "Successfully removed.";
} }
else else
{ {
responseCode = BAD_REQUEST; responseCode = HTTP_STATUS_CODE::BAD_REQUEST;
responseBody.CloneFrom(RestResponseTemplates::GetByCode(BAD_REQUEST)); responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::BAD_REQUEST));
responseBody.Set("message") = "Failed."; responseBody.Set("message") = "Failed.";
} }
@ -443,8 +443,8 @@ bool RestQueryHandler::RemoveDownloadEntry(const JsonBlock& request, JsonBlock&
bool RestQueryHandler::UpdateConfig(const JsonBlock& request, JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode) bool RestQueryHandler::UpdateConfig(const JsonBlock& request, JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode)
{ {
responseCode = OK; responseCode = HTTP_STATUS_CODE::OK;
responseBody.CloneFrom(RestResponseTemplates::GetByCode(OK)); responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::OK));
JsonBlock dummy; JsonBlock dummy;
if (ValidateField("config", JDType::JSON, request, dummy)) if (ValidateField("config", JDType::JSON, request, dummy))
@ -489,8 +489,8 @@ bool RestQueryHandler::ResetConfigDefaults(const JsonBlock& request, JsonBlock&
else ConsoleManager::HideConsole(); else ConsoleManager::HideConsole();
} }
responseCode = OK; responseCode = HTTP_STATUS_CODE::OK;
responseBody.CloneFrom(RestResponseTemplates::GetByCode(OK)); responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::OK));
responseBody.Set("message") = "Reset config to default..."; responseBody.Set("message") = "Reset config to default...";
responseBody.Set("config") = XGConfig::GetSavefileBuffer(); responseBody.Set("config") = XGConfig::GetSavefileBuffer();
return true; return true;
@ -498,8 +498,8 @@ bool RestQueryHandler::ResetConfigDefaults(const JsonBlock& request, JsonBlock&
bool Rest::RestQueryHandler::GetServerVersion(const JasonPP::JsonBlock& request, JasonPP::JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode) bool Rest::RestQueryHandler::GetServerVersion(const JasonPP::JsonBlock& request, JasonPP::JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode)
{ {
responseCode = OK; responseCode = HTTP_STATUS_CODE::OK;
responseBody.CloneFrom(RestResponseTemplates::GetByCode(OK)); responseBody.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::OK));
responseBody.Set("server_version").SetFloatData(TUBIO_SERVER_VERSION); responseBody.Set("server_version").SetFloatData(TUBIO_SERVER_VERSION);
return true; return true;
} }
@ -516,7 +516,7 @@ bool RestQueryHandler::ValidateField(const std::string name, const JasonPP::JDTy
{ {
if (checkThat.GetDataType() != JDType::JSON) if (checkThat.GetDataType() != JDType::JSON)
{ {
putErrorResponseHere = RestResponseTemplates::GetByCode(BAD_REQUEST, "The request body must be a json struct! No json array or similar..."); putErrorResponseHere = RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::BAD_REQUEST, "The request body must be a json struct! No json array or similar...");
return false; return false;
} }
@ -538,12 +538,12 @@ bool RestQueryHandler::ValidateField(const std::string name, const JasonPP::JDTy
ss << "Mandatory value \"" << name << "\" is of wrong type (" << JsonDataType2String(cached.GetDataType()) << ")" << std::endl; ss << "Mandatory value \"" << name << "\" is of wrong type (" << JsonDataType2String(cached.GetDataType()) << ")" << std::endl;
ss << "Should be of type " << JsonDataType2String(type) << "! (Integers can be casted to floats)"; ss << "Should be of type " << JsonDataType2String(type) << "! (Integers can be casted to floats)";
putErrorResponseHere.CloneFrom(RestResponseTemplates::GetByCode(BAD_REQUEST, ss.str())); putErrorResponseHere.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::BAD_REQUEST, ss.str()));
} }
} }
else else
{ {
putErrorResponseHere.CloneFrom(RestResponseTemplates::GetByCode(BAD_REQUEST, std::string("Missing mandatory value '" + name + "'"))); putErrorResponseHere.CloneFrom(RestResponseTemplates::GetByCode(HTTP_STATUS_CODE::BAD_REQUEST, std::string("Missing mandatory value '" + name + "'")));
return false; return false;
} }

View File

@ -3,7 +3,7 @@
namespace Rest namespace Rest
{ {
enum HTTP_STATUS_CODE { enum class HTTP_STATUS_CODE {
OK = 200, OK = 200,
BAD_REQUEST = 400, BAD_REQUEST = 400,
UNAUTHORIZED = 401, UNAUTHORIZED = 401,

View File

@ -149,7 +149,12 @@
<ItemGroup> <ItemGroup>
<ClCompile Include="ConsoleManager.cpp" /> <ClCompile Include="ConsoleManager.cpp" />
<ClCompile Include="DownloadManager.cpp" /> <ClCompile Include="DownloadManager.cpp" />
<ClCompile Include="external_dependencies\casenta\mongoose\mongoose.c" /> <ClCompile Include="external_dependencies\casenta\mongoose\mongoose.c">
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TurnOffAllWarnings</WarningLevel>
<WarningLevel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TurnOffAllWarnings</WarningLevel>
</ClCompile>
<ClCompile Include="external_dependencies\leonetienne\JasonPP\JasonPP.cpp" /> <ClCompile Include="external_dependencies\leonetienne\JasonPP\JasonPP.cpp" />
<ClCompile Include="FileSystem.cpp" /> <ClCompile Include="FileSystem.cpp" />
<ClCompile Include="Framework.cpp" /> <ClCompile Include="Framework.cpp" />

View File

@ -1,2 +1,2 @@
#pragma once #pragma once
#define TUBIO_SERVER_VERSION (0.5) #define TUBIO_SERVER_VERSION (0.51)

View File

@ -74,7 +74,7 @@ void XGConfig::LoadFromJson(const JasonPP::JsonBlock& json)
if (IsJsonFieldValid(json, "logging.autosave_interval", JDType::INT)) if (IsJsonFieldValid(json, "logging.autosave_interval", JDType::INT))
{ {
logging.autosave_interval = json.ShorthandGet("logging.autosave_interval").AsInt; logging.autosave_interval = (uint32_t)json.ShorthandGet("logging.autosave_interval").AsInt;
} }
@ -86,7 +86,7 @@ void XGConfig::LoadFromJson(const JasonPP::JsonBlock& json)
if (IsJsonFieldValid(json, "httpServer.polling_rate", JDType::INT)) if (IsJsonFieldValid(json, "httpServer.polling_rate", JDType::INT))
{ {
httpServer.polling_rate = json.ShorthandGet("httpServer.polling_rate").AsInt; httpServer.polling_rate = (uint32_t)json.ShorthandGet("httpServer.polling_rate").AsInt;
} }
if (IsJsonFieldValid(json, "httpServer.rootdir", JDType::STRING)) if (IsJsonFieldValid(json, "httpServer.rootdir", JDType::STRING))
@ -102,7 +102,7 @@ void XGConfig::LoadFromJson(const JasonPP::JsonBlock& json)
} }
if (IsJsonFieldValid(json, "downloader.num_threads", JDType::INT)) if (IsJsonFieldValid(json, "downloader.num_threads", JDType::INT))
{ {
downloader.num_threads = json.ShorthandGet("downloader.num_threads").AsInt; downloader.num_threads = (uint32_t)json.ShorthandGet("downloader.num_threads").AsInt;
} }
if (IsJsonFieldValid(json, "downloader.max_dlrate_per_thread", JDType::STRING)) if (IsJsonFieldValid(json, "downloader.max_dlrate_per_thread", JDType::STRING))
{ {

View File

@ -17,6 +17,13 @@
* license, as set out in <https://www.cesanta.com/license>. * license, as set out in <https://www.cesanta.com/license>.
*/ */
#ifdef _WIN
#pragma warning disable warning-list // Not my (leonetienne) code, not my warnings
#else
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wall"
#endif
#include "mongoose.h" #include "mongoose.h"
#ifdef MG_MODULE_LINES #ifdef MG_MODULE_LINES
#line 1 "src/mg_internal.h" #line 1 "src/mg_internal.h"
@ -16131,3 +16138,7 @@ unsigned int sleep(unsigned int seconds) {
} }
#endif /* _WIN32 */ #endif /* _WIN32 */
#ifndef _WIN
#pragma GCC diagnostic pop
#endif

View File

@ -27,5 +27,5 @@ g++ \
\ \
-lpthread \ -lpthread \
\ \
-w \ -Wall \
-o ./tubio.out -o ./tubio.out

Binary file not shown.