Added rest query to upate youtube-dl
This commit is contained in:
parent
8f3ba858c5
commit
db707b794b
@ -14,6 +14,7 @@ void RestQueryHandler::PreInit()
|
|||||||
|
|
||||||
bool RestQueryHandler::ProcessQuery(const std::string clientAdress, const Json& request, JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode)
|
bool RestQueryHandler::ProcessQuery(const std::string clientAdress, const Json& request, JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode)
|
||||||
{
|
{
|
||||||
|
// Print the client ip address alongide every log
|
||||||
log->SetAdditionalInformation(std::string("@") + clientAdress);
|
log->SetAdditionalInformation(std::string("@") + clientAdress);
|
||||||
|
|
||||||
if (!ValidateField("request", JDType::STRING, request, responseBody))
|
if (!ValidateField("request", JDType::STRING, request, responseBody))
|
||||||
@ -39,6 +40,7 @@ bool RestQueryHandler::ProcessQuery(const std::string clientAdress, const Json&
|
|||||||
else if (requestName == "get_os_name") return GetOSName(requestBody, responseBody, responseCode);
|
else if (requestName == "get_os_name") return GetOSName(requestBody, responseBody, responseCode);
|
||||||
else if (requestName == "fetch_session_logs") return FetchSessionLogs(requestBody, responseBody, responseCode);
|
else if (requestName == "fetch_session_logs") return FetchSessionLogs(requestBody, responseBody, responseCode);
|
||||||
else if (requestName == "fetch_alltime_logs") return FetchAlltimeLogs(requestBody, responseBody, responseCode);
|
else if (requestName == "fetch_alltime_logs") return FetchAlltimeLogs(requestBody, responseBody, responseCode);
|
||||||
|
else if (requestName == "update_dep_youtubedl") return UpdateYoutubeDL(requestBody, responseBody, responseCode);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -112,7 +114,12 @@ bool RestQueryHandler::FetchSessionCache(const JsonBlock& request, JsonBlock& re
|
|||||||
JsonBlock dummy;
|
JsonBlock dummy;
|
||||||
if (ValidateField("max_age", JDType::INT, request, dummy))
|
if (ValidateField("max_age", JDType::INT, request, dummy))
|
||||||
{
|
{
|
||||||
max_age = request["max_age"].AsInt;
|
// Only respect the given max_age, if the age does not exceed tubio boot-time!
|
||||||
|
// This way we can ensure that only entries of this SESSION will appear!
|
||||||
|
if (request["max_age"].AsInt >= 0)
|
||||||
|
{
|
||||||
|
max_age = min(request["max_age"].AsInt, max_age);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (ValidateField("max_num", JDType::INT, request, dummy))
|
if (ValidateField("max_num", JDType::INT, request, dummy))
|
||||||
{
|
{
|
||||||
@ -357,7 +364,43 @@ bool RestQueryHandler::ClearLogs(const JsonBlock& request, JsonBlock& responseBo
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool RestQueryHandler::UpdateYoutubeDL(const JsonBlock& request, JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode)
|
||||||
|
{
|
||||||
|
log->cout << "Updating youtube-dl...";
|
||||||
|
log->Flush();
|
||||||
|
|
||||||
|
std::string result = Updater::UpdateYoutubeDL();
|
||||||
|
if (result == "OK")
|
||||||
|
{
|
||||||
|
log->cout << " => OK!";
|
||||||
|
log->Flush();
|
||||||
|
|
||||||
|
responseCode = OK;
|
||||||
|
responseBody.CloneFrom(RestResponseTemplates::GetByCode(OK));
|
||||||
|
responseBody.Set("message") = "Updated youtube-dl.exe successfully!";
|
||||||
|
}
|
||||||
|
else if (result == "not implemented")
|
||||||
|
{
|
||||||
|
log->cout << " => NOT_IMPLEMENTED!";
|
||||||
|
log->Flush();
|
||||||
|
|
||||||
|
log->Flush();
|
||||||
|
responseCode = NOT_IMPLEMENTED;
|
||||||
|
responseBody.CloneFrom(RestResponseTemplates::GetByCode(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!";
|
||||||
|
}
|
||||||
|
else // Some other error
|
||||||
|
{
|
||||||
|
log->cout << " => urlmon error: " << result;
|
||||||
|
log->Flush();
|
||||||
|
|
||||||
|
responseCode = INTERNAL_SERVER_ERROR;
|
||||||
|
responseBody.CloneFrom(RestResponseTemplates::GetByCode(INTERNAL_SERVER_ERROR));
|
||||||
|
responseBody.Set("message") = "Unable do update youtube-dl.exe! See urlmon " + result;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#include "Logger.h"
|
#include "Logger.h"
|
||||||
#include "DownloadManager.h"
|
#include "DownloadManager.h"
|
||||||
#include "ConsoleManager.h"
|
#include "ConsoleManager.h"
|
||||||
|
#include "Updater.h"
|
||||||
|
|
||||||
namespace Rest
|
namespace Rest
|
||||||
{
|
{
|
||||||
@ -31,6 +32,7 @@ namespace Rest
|
|||||||
static bool FetchAlltimeLogs(const JasonPP::JsonBlock& request, JasonPP::JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode);
|
static bool FetchAlltimeLogs(const JasonPP::JsonBlock& request, JasonPP::JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode);
|
||||||
static bool FetchSessionLogs(const JasonPP::JsonBlock& request, JasonPP::JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode);
|
static bool FetchSessionLogs(const JasonPP::JsonBlock& request, JasonPP::JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode);
|
||||||
static bool GetDiskUsage(const JasonPP::JsonBlock& request, JasonPP::JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode);
|
static bool GetDiskUsage(const JasonPP::JsonBlock& request, JasonPP::JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode);
|
||||||
|
static bool UpdateYoutubeDL(const JasonPP::JsonBlock& request, JasonPP::JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode);
|
||||||
|
|
||||||
static bool ValidateField(const std::string name, const JasonPP::JDType type, const JasonPP::Json& checkThat, JasonPP::JsonBlock& putErrorResponseHere);
|
static bool ValidateField(const std::string name, const JasonPP::JDType type, const JasonPP::Json& checkThat, JasonPP::JsonBlock& putErrorResponseHere);
|
||||||
|
|
||||||
|
@ -93,6 +93,7 @@
|
|||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalDependencies>urlmon.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
@ -110,6 +111,7 @@
|
|||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalDependencies>urlmon.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
@ -123,6 +125,7 @@
|
|||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalDependencies>urlmon.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
@ -140,6 +143,7 @@
|
|||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalDependencies>urlmon.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@ -155,6 +159,7 @@
|
|||||||
<ClCompile Include="RestQueryHandler.cpp" />
|
<ClCompile Include="RestQueryHandler.cpp" />
|
||||||
<ClCompile Include="RestResponseTemplates.cpp" />
|
<ClCompile Include="RestResponseTemplates.cpp" />
|
||||||
<ClCompile Include="HttpServer.cpp" />
|
<ClCompile Include="HttpServer.cpp" />
|
||||||
|
<ClCompile Include="Updater.cpp" />
|
||||||
<ClCompile Include="XGConfig.cpp" />
|
<ClCompile Include="XGConfig.cpp" />
|
||||||
<ClCompile Include="XGControl.cpp" />
|
<ClCompile Include="XGControl.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
@ -171,6 +176,7 @@
|
|||||||
<ClInclude Include="RestQueryHandler.h" />
|
<ClInclude Include="RestQueryHandler.h" />
|
||||||
<ClInclude Include="RestResponseTemplates.h" />
|
<ClInclude Include="RestResponseTemplates.h" />
|
||||||
<ClInclude Include="HttpServer.h" />
|
<ClInclude Include="HttpServer.h" />
|
||||||
|
<ClInclude Include="Updater.h" />
|
||||||
<ClInclude Include="XGConfig.h" />
|
<ClInclude Include="XGConfig.h" />
|
||||||
<ClInclude Include="XGControl.h" />
|
<ClInclude Include="XGControl.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
@ -60,6 +60,9 @@
|
|||||||
<ClCompile Include="external_dependencies\leonetienne\JasonPP\JasonPP.cpp">
|
<ClCompile Include="external_dependencies\leonetienne\JasonPP\JasonPP.cpp">
|
||||||
<Filter>_external_dependencies</Filter>
|
<Filter>_external_dependencies</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="Updater.cpp">
|
||||||
|
<Filter>Quelldateien</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="Logger.h">
|
<ClInclude Include="Logger.h">
|
||||||
@ -104,5 +107,8 @@
|
|||||||
<ClInclude Include="external_dependencies\leonetienne\JasonPP\JasonPP.hpp">
|
<ClInclude Include="external_dependencies\leonetienne\JasonPP\JasonPP.hpp">
|
||||||
<Filter>_external_dependencies</Filter>
|
<Filter>_external_dependencies</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="Updater.h">
|
||||||
|
<Filter>Headerdateien</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
19
Tubio/Updater.cpp
Normal file
19
Tubio/Updater.cpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#include "Updater.h"
|
||||||
|
|
||||||
|
std::string Updater::UpdateYoutubeDL()
|
||||||
|
{
|
||||||
|
#ifdef _WIN
|
||||||
|
HRESULT res = URLDownloadToFileA(NULL, "https://yt-dl.org/downloads/latest/youtube-dl.exe", "youtube-dl.exe", 0, NULL);
|
||||||
|
|
||||||
|
if (SUCCEEDED(res))
|
||||||
|
{
|
||||||
|
return "OK";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return "error code: 0x" + (JasonPP::Internal::Helpers::Base10_2_X(res, "0123456789abcdef"));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#endif
|
||||||
|
return "not implemented";
|
||||||
|
}
|
17
Tubio/Updater.h
Normal file
17
Tubio/Updater.h
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#pragma once
|
||||||
|
#ifdef _WIN
|
||||||
|
#include <string>
|
||||||
|
#include <urlmon.h>
|
||||||
|
#include <Windows.h>
|
||||||
|
#include "external_dependencies/leonetienne/JasonPP/JasonPP.hpp" // We need Internal::Helpers
|
||||||
|
#endif
|
||||||
|
|
||||||
|
class Updater
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/// <summary>
|
||||||
|
/// Will update youtube-dl.exe on windows only!! Returns error message. On linux, you have to update it yourself, since it is a package of its own!
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
static std::string UpdateYoutubeDL();
|
||||||
|
};
|
@ -93,7 +93,7 @@
|
|||||||
"header": [],
|
"header": [],
|
||||||
"body": {
|
"body": {
|
||||||
"mode": "raw",
|
"mode": "raw",
|
||||||
"raw": "{\r\n \"request\": \"fetch_session_cache\",\r\n \"max_age\": -1,\r\n \"max_num\": -1\r\n}",
|
"raw": "{\r\n \"request\": \"fetch_session_cache\",\r\n \"max-num\": -1\r\n}\r\n",
|
||||||
"options": {
|
"options": {
|
||||||
"raw": {
|
"raw": {
|
||||||
"language": "json"
|
"language": "json"
|
||||||
@ -391,6 +391,33 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"response": []
|
"response": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "UpdateYotubeDL_Dependency",
|
||||||
|
"request": {
|
||||||
|
"method": "POST",
|
||||||
|
"header": [],
|
||||||
|
"body": {
|
||||||
|
"mode": "raw",
|
||||||
|
"raw": "{\r\n \"request\": \"update_dep_youtubedl\"\r\n}",
|
||||||
|
"options": {
|
||||||
|
"raw": {
|
||||||
|
"language": "json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"raw": "localhost:6969/api",
|
||||||
|
"host": [
|
||||||
|
"localhost"
|
||||||
|
],
|
||||||
|
"port": "6969",
|
||||||
|
"path": [
|
||||||
|
"api"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"response": []
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"protocolProfileBehavior": {}
|
"protocolProfileBehavior": {}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user