summaryrefslogtreecommitdiffstats
path: root/src/web_service/web_backend.h
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2018-10-11 03:23:41 +0200
committerLioncash <mathew1800@gmail.com>2018-10-11 04:29:35 +0200
commit183a664405661fb531b82e2a0a3a8c6651a1ce8a (patch)
tree6fab20b1cfbb116f5031de88efb809a541cbbcff /src/web_service/web_backend.h
parenttelemetry_json: Use the PImpl idiom to avoid unnecessary dependency exposure (diff)
downloadyuzu-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 'src/web_service/web_backend.h')
-rw-r--r--src/web_service/web_backend.h58
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