diff options
-rw-r--r-- | src/web_service/web_backend.cpp | 45 | ||||
-rw-r--r-- | src/web_service/web_backend.h | 12 |
2 files changed, 17 insertions, 40 deletions
diff --git a/src/web_service/web_backend.cpp b/src/web_service/web_backend.cpp index 13e4555ac..96ddf6c3c 100644 --- a/src/web_service/web_backend.cpp +++ b/src/web_service/web_backend.cpp @@ -5,48 +5,37 @@ #include <cpr/cpr.h> #include <stdlib.h> #include "common/logging/log.h" +#include "core/settings.h" #include "web_service/web_backend.h" namespace WebService { static constexpr char API_VERSION[]{"1"}; -static constexpr char ENV_VAR_USERNAME[]{"CITRA_WEB_SERVICES_USERNAME"}; -static constexpr char ENV_VAR_TOKEN[]{"CITRA_WEB_SERVICES_TOKEN"}; -static std::string GetEnvironmentVariable(const char* name) { - const char* value{getenv(name)}; - if (value) { - return value; +void PostJson(const std::string& url, const std::string& data) { + if (!Settings::values.enable_telemetry) { + // Telemetry disabled by user configuration + return; } - return {}; -} - -const std::string& GetUsername() { - static const std::string username{GetEnvironmentVariable(ENV_VAR_USERNAME)}; - return username; -} -const std::string& GetToken() { - static const std::string token{GetEnvironmentVariable(ENV_VAR_TOKEN)}; - return token; -} - -void PostJson(const std::string& url, const std::string& data) { if (url.empty()) { LOG_ERROR(WebService, "URL is invalid"); return; } - if (GetUsername().empty() || GetToken().empty()) { - LOG_ERROR(WebService, "Environment variables %s and %s must be set to POST JSON", - ENV_VAR_USERNAME, ENV_VAR_TOKEN); - return; + if (Settings::values.citra_token.empty() || Settings::values.citra_username.empty()) { + // Anonymous request if citra token or username are empty + cpr::PostAsync( + cpr::Url{url}, cpr::Body{data}, + cpr::Header{{"Content-Type", "application/json"}, {"api-version", API_VERSION}}); + } else { + // We have both, do an authenticated request + cpr::PostAsync(cpr::Url{url}, cpr::Body{data}, + cpr::Header{{"Content-Type", "application/json"}, + {"x-username", Settings::values.citra_username}, + {"x-token", Settings::values.citra_token}, + {"api-version", API_VERSION}}); } - - cpr::PostAsync(cpr::Url{url}, cpr::Body{data}, cpr::Header{{"Content-Type", "application/json"}, - {"x-username", GetUsername()}, - {"x-token", GetToken()}, - {"api-version", API_VERSION}}); } } // namespace WebService diff --git a/src/web_service/web_backend.h b/src/web_service/web_backend.h index 2753d3b68..08e384869 100644 --- a/src/web_service/web_backend.h +++ b/src/web_service/web_backend.h @@ -10,18 +10,6 @@ namespace WebService { /** - * Gets the current username for accessing services.citra-emu.org. - * @returns Username as a string, empty if not set. - */ -const std::string& GetUsername(); - -/** - * Gets the current token for accessing services.citra-emu.org. - * @returns Token as a string, empty if not set. - */ -const std::string& GetToken(); - -/** * Posts JSON to services.citra-emu.org. * @param url URL of the services.citra-emu.org endpoint to post data to. * @param data String of JSON data to use for the body of the POST request. |