Fixed warnings
This commit is contained in:
parent
0be0850bb0
commit
82cdbe7ba3
@ -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;
|
||||||
|
@ -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();
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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,
|
||||||
|
@ -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" />
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#define TUBIO_SERVER_VERSION (0.5)
|
#define TUBIO_SERVER_VERSION (0.51)
|
||||||
|
@ -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))
|
||||||
{
|
{
|
||||||
|
@ -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
|
@ -27,5 +27,5 @@ g++ \
|
|||||||
\
|
\
|
||||||
-lpthread \
|
-lpthread \
|
||||||
\
|
\
|
||||||
-w \
|
-Wall \
|
||||||
-o ./tubio.out
|
-o ./tubio.out
|
||||||
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user