diff options
author | bunnei <bunneidev@gmail.com> | 2017-08-25 01:27:13 +0200 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2017-08-26 05:37:47 +0200 |
commit | c8562b21d91625333218d69cddff104057273e43 (patch) | |
tree | ff390bc1f78888fefcf633358fa5e914ffbece50 | |
parent | web_services: Refactor to remove dependency on Core. (diff) | |
download | yuzu-c8562b21d91625333218d69cddff104057273e43.tar yuzu-c8562b21d91625333218d69cddff104057273e43.tar.gz yuzu-c8562b21d91625333218d69cddff104057273e43.tar.bz2 yuzu-c8562b21d91625333218d69cddff104057273e43.tar.lz yuzu-c8562b21d91625333218d69cddff104057273e43.tar.xz yuzu-c8562b21d91625333218d69cddff104057273e43.tar.zst yuzu-c8562b21d91625333218d69cddff104057273e43.zip |
-rw-r--r-- | src/web_service/web_backend.cpp | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/src/web_service/web_backend.cpp b/src/web_service/web_backend.cpp index e50c3a301..a6070fc0f 100644 --- a/src/web_service/web_backend.cpp +++ b/src/web_service/web_backend.cpp @@ -2,8 +2,9 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. +#include <cstdlib> +#include <thread> #include <cpr/cpr.h> -#include <stdlib.h> #include "common/logging/log.h" #include "web_service/web_backend.h" @@ -11,6 +12,19 @@ namespace WebService { static constexpr char API_VERSION[]{"1"}; +static void PostJsonAuthenticated(const std::string& url, const std::string& data, + const std::string& username, const std::string& token) { + cpr::Post(cpr::Url{url}, cpr::Body{data}, cpr::Header{{"Content-Type", "application/json"}, + {"x-username", username}, + {"x-token", token}, + {"api-version", API_VERSION}}); +} + +static void PostJsonAnonymous(const std::string& url, const std::string& data) { + cpr::Post(cpr::Url{url}, cpr::Body{data}, + cpr::Header{{"Content-Type", "application/json"}, {"api-version", API_VERSION}}); +} + void PostJson(const std::string& url, const std::string& data, bool allow_anonymous, const std::string& username, const std::string& token) { if (url.empty()) { @@ -24,18 +38,13 @@ void PostJson(const std::string& url, const std::string& data, bool allow_anonym return; } + // Post JSON asynchronously by spawning a new thread if (are_credentials_provided) { // Authenticated request if credentials are provided - cpr::PostAsync(cpr::Url{url}, cpr::Body{data}, - cpr::Header{{"Content-Type", "application/json"}, - {"x-username", username}, - {"x-token", token}, - {"api-version", API_VERSION}}); + std::thread{PostJsonAuthenticated, url, data, username, token}.detach(); } else { // Otherwise, anonymous request - cpr::PostAsync( - cpr::Url{url}, cpr::Body{data}, - cpr::Header{{"Content-Type", "application/json"}, {"api-version", API_VERSION}}); + std::thread{PostJsonAnonymous, url, data}.detach(); } } |