diff options
author | Lioncash <mathew1800@gmail.com> | 2018-10-11 03:23:41 +0200 |
---|---|---|
committer | Lioncash <mathew1800@gmail.com> | 2018-10-11 04:29:35 +0200 |
commit | 183a664405661fb531b82e2a0a3a8c6651a1ce8a (patch) | |
tree | 6fab20b1cfbb116f5031de88efb809a541cbbcff /src/web_service/web_backend.h | |
parent | telemetry_json: Use the PImpl idiom to avoid unnecessary dependency exposure (diff) | |
download | yuzu-183a664405661fb531b82e2a0a3a8c6651a1ce8a.tar yuzu-183a664405661fb531b82e2a0a3a8c6651a1ce8a.tar.gz yuzu-183a664405661fb531b82e2a0a3a8c6651a1ce8a.tar.bz2 yuzu-183a664405661fb531b82e2a0a3a8c6651a1ce8a.tar.lz yuzu-183a664405661fb531b82e2a0a3a8c6651a1ce8a.tar.xz yuzu-183a664405661fb531b82e2a0a3a8c6651a1ce8a.tar.zst yuzu-183a664405661fb531b82e2a0a3a8c6651a1ce8a.zip |
Diffstat (limited to '')
-rw-r--r-- | src/web_service/web_backend.h | 58 |
1 files changed, 10 insertions, 48 deletions
diff --git a/src/web_service/web_backend.h b/src/web_service/web_backend.h index d75fbcc15..c637e09df 100644 --- a/src/web_service/web_backend.h +++ b/src/web_service/web_backend.h @@ -4,23 +4,19 @@ #pragma once -#include <functional> -#include <mutex> +#include <memory> #include <string> -#include <tuple> -#include <httplib.h> -#include "common/common_types.h" -#include "common/web_result.h" -namespace httplib { -class Client; +namespace Common { +struct WebResult; } namespace WebService { class Client { public: - Client(const std::string& host, const std::string& username, const std::string& token); + Client(std::string host, std::string username, std::string token); + ~Client(); /** * Posts JSON to the specified path. @@ -30,9 +26,7 @@ public: * @return the result of the request. */ Common::WebResult PostJson(const std::string& path, const std::string& data, - bool allow_anonymous) { - return GenericJson("POST", path, data, allow_anonymous); - } + bool allow_anonymous); /** * Gets JSON from the specified path. @@ -40,9 +34,7 @@ public: * @param allow_anonymous If true, allow anonymous unauthenticated requests. * @return the result of the request. */ - Common::WebResult GetJson(const std::string& path, bool allow_anonymous) { - return GenericJson("GET", path, "", allow_anonymous); - } + Common::WebResult GetJson(const std::string& path, bool allow_anonymous); /** * Deletes JSON to the specified path. @@ -52,41 +44,11 @@ public: * @return the result of the request. */ Common::WebResult DeleteJson(const std::string& path, const std::string& data, - bool allow_anonymous) { - return GenericJson("DELETE", path, data, allow_anonymous); - } + bool allow_anonymous); private: - /// A generic function handles POST, GET and DELETE request together - Common::WebResult GenericJson(const std::string& method, const std::string& path, - const std::string& data, bool allow_anonymous); - - /** - * A generic function with explicit authentication method specified - * JWT is used if the jwt parameter is not empty - * username + token is used if jwt is empty but username and token are not empty - * anonymous if all of jwt, username and token are empty - */ - Common::WebResult GenericJson(const std::string& method, const std::string& path, - const std::string& data, const std::string& jwt = "", - const std::string& username = "", const std::string& token = ""); - - // Retrieve a new JWT from given username and token - void UpdateJWT(); - - std::string host; - std::string username; - std::string token; - std::string jwt; - std::unique_ptr<httplib::Client> cli; - - struct JWTCache { - std::mutex mutex; - std::string username; - std::string token; - std::string jwt; - }; - static JWTCache jwt_cache; + struct Impl; + std::unique_ptr<Impl> impl; }; } // namespace WebService |