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)
|
||||
{
|
||||
// Print the client ip address alongide every log
|
||||
log->SetAdditionalInformation(std::string("@") + clientAdress);
|
||||
|
||||
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 == "fetch_session_logs") return FetchSessionLogs(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;
|
||||
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))
|
||||
{
|
||||
@ -357,7 +364,43 @@ bool RestQueryHandler::ClearLogs(const JsonBlock& request, JsonBlock& responseBo
|
||||
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 "DownloadManager.h"
|
||||
#include "ConsoleManager.h"
|
||||
#include "Updater.h"
|
||||
|
||||
namespace Rest
|
||||
{
|
||||
@ -31,6 +32,7 @@ namespace Rest
|
||||
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 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);
|
||||
|
||||
|
@ -93,6 +93,7 @@
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>urlmon.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
@ -110,6 +111,7 @@
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>urlmon.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
@ -123,6 +125,7 @@
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>urlmon.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
@ -140,6 +143,7 @@
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>urlmon.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
@ -155,6 +159,7 @@
|
||||
<ClCompile Include="RestQueryHandler.cpp" />
|
||||
<ClCompile Include="RestResponseTemplates.cpp" />
|
||||
<ClCompile Include="HttpServer.cpp" />
|
||||
<ClCompile Include="Updater.cpp" />
|
||||
<ClCompile Include="XGConfig.cpp" />
|
||||
<ClCompile Include="XGControl.cpp" />
|
||||
</ItemGroup>
|
||||
@ -171,6 +176,7 @@
|
||||
<ClInclude Include="RestQueryHandler.h" />
|
||||
<ClInclude Include="RestResponseTemplates.h" />
|
||||
<ClInclude Include="HttpServer.h" />
|
||||
<ClInclude Include="Updater.h" />
|
||||
<ClInclude Include="XGConfig.h" />
|
||||
<ClInclude Include="XGControl.h" />
|
||||
</ItemGroup>
|
||||
|
@ -60,6 +60,9 @@
|
||||
<ClCompile Include="external_dependencies\leonetienne\JasonPP\JasonPP.cpp">
|
||||
<Filter>_external_dependencies</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Updater.cpp">
|
||||
<Filter>Quelldateien</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="Logger.h">
|
||||
@ -104,5 +107,8 @@
|
||||
<ClInclude Include="external_dependencies\leonetienne\JasonPP\JasonPP.hpp">
|
||||
<Filter>_external_dependencies</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Updater.h">
|
||||
<Filter>Headerdateien</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</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": [],
|
||||
"body": {
|
||||
"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": {
|
||||
"raw": {
|
||||
"language": "json"
|
||||
@ -391,6 +391,33 @@
|
||||
}
|
||||
},
|
||||
"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": {}
|
||||
|
Loading…
x
Reference in New Issue
Block a user