aboutsummaryrefslogtreecommitdiff
path: root/primedev/mods/autodownload/moddownloader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'primedev/mods/autodownload/moddownloader.cpp')
-rw-r--r--primedev/mods/autodownload/moddownloader.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/primedev/mods/autodownload/moddownloader.cpp b/primedev/mods/autodownload/moddownloader.cpp
index feaa08ea..8e533dec 100644
--- a/primedev/mods/autodownload/moddownloader.cpp
+++ b/primedev/mods/autodownload/moddownloader.cpp
@@ -55,6 +55,8 @@ size_t WriteToString(void* ptr, size_t size, size_t count, void* stream)
void ModDownloader::FetchModsListFromAPI()
{
+ modState.state = MANIFESTO_FETCHING;
+
std::thread requestThread(
[this]()
{
@@ -63,6 +65,9 @@ void ModDownloader::FetchModsListFromAPI()
rapidjson::Document verifiedModsJson;
std::string url = modsListUrl;
+ // Empty verified mods manifesto
+ verifiedMods = {};
+
curl_global_init(CURL_GLOBAL_ALL);
easyhandle = curl_easy_init();
std::string readBuffer;
@@ -75,7 +80,12 @@ void ModDownloader::FetchModsListFromAPI()
curl_easy_setopt(easyhandle, CURLOPT_WRITEDATA, &readBuffer);
curl_easy_setopt(easyhandle, CURLOPT_WRITEFUNCTION, WriteToString);
result = curl_easy_perform(easyhandle);
- ScopeGuard cleanup([&] { curl_easy_cleanup(easyhandle); });
+ ScopeGuard cleanup(
+ [&]
+ {
+ curl_easy_cleanup(easyhandle);
+ modState.state = DOWNLOADING;
+ });
if (result == CURLcode::CURLE_OK)
{
@@ -614,7 +624,12 @@ void ModDownloader::DownloadMod(std::string modName, std::string modVersion)
ON_DLL_LOAD_RELIESON("engine.dll", ModDownloader, (ConCommand), (CModule module))
{
g_pModDownloader = new ModDownloader();
+}
+
+ADD_SQFUNC("void", NSFetchVerifiedModsManifesto, "", "", ScriptContext::SERVER | ScriptContext::CLIENT | ScriptContext::UI)
+{
g_pModDownloader->FetchModsListFromAPI();
+ return SQRESULT_NULL;
}
ADD_SQFUNC(