diff options
author | bunnei <bunneidev@gmail.com> | 2018-10-16 03:33:32 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-16 03:33:32 +0200 |
commit | 548958bcafa572fdfbb147b1bd590c02f9bb4b40 (patch) | |
tree | 0e6b51ffb96eeaa0873b5f47994aaf0959925bc4 /src/web_service/web_backend.h | |
parent | Merge pull request #1487 from lioncash/maybe-unused (diff) | |
parent | core/CMakeLists: Make all web_service-related libraries private (diff) | |
download | yuzu-548958bcafa572fdfbb147b1bd590c02f9bb4b40.tar yuzu-548958bcafa572fdfbb147b1bd590c02f9bb4b40.tar.gz yuzu-548958bcafa572fdfbb147b1bd590c02f9bb4b40.tar.bz2 yuzu-548958bcafa572fdfbb147b1bd590c02f9bb4b40.tar.lz yuzu-548958bcafa572fdfbb147b1bd590c02f9bb4b40.tar.xz yuzu-548958bcafa572fdfbb147b1bd590c02f9bb4b40.tar.zst yuzu-548958bcafa572fdfbb147b1bd590c02f9bb4b40.zip |
Diffstat (limited to 'src/web_service/web_backend.h')
-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 |