yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
httplib_client.h
Go to the documentation of this file.
1#ifndef YAZE_APP_NET_NATIVE_HTTPLIB_CLIENT_H_
2#define YAZE_APP_NET_NATIVE_HTTPLIB_CLIENT_H_
3
4#include <memory>
5#include <string>
6
8
9// Forward declaration to avoid including httplib.h in header
10namespace httplib {
11class Client;
12}
13
14namespace yaze {
15namespace net {
16
24class HttpLibClient : public IHttpClient {
25 public:
27 ~HttpLibClient() override;
28
35 absl::StatusOr<HttpResponse> Get(
36 const std::string& url,
37 const Headers& headers = {}) override;
38
46 absl::StatusOr<HttpResponse> Post(
47 const std::string& url,
48 const std::string& body,
49 const Headers& headers = {}) override;
50
58 absl::StatusOr<HttpResponse> Put(
59 const std::string& url,
60 const std::string& body,
61 const Headers& headers = {}) override;
62
69 absl::StatusOr<HttpResponse> Delete(
70 const std::string& url,
71 const Headers& headers = {}) override;
72
77 void SetTimeout(int timeout_seconds) override;
78
79 private:
89 absl::Status ParseUrl(const std::string& url,
90 std::string& scheme,
91 std::string& host,
92 int& port,
93 std::string& path) const;
94
102 absl::StatusOr<std::shared_ptr<httplib::Client>> GetOrCreateClient(
103 const std::string& scheme,
104 const std::string& host,
105 int port);
106
112 Headers ConvertHeaders(const void* httplib_headers) const;
113
114 // Cache clients per host to avoid reconnection overhead
115 std::map<std::string, std::shared_ptr<httplib::Client>> client_cache_;
116};
117
118} // namespace net
119} // namespace yaze
120
121#endif // YAZE_APP_NET_NATIVE_HTTPLIB_CLIENT_H_
Native HTTP client implementation using cpp-httplib.
absl::StatusOr< HttpResponse > Get(const std::string &url, const Headers &headers={}) override
Perform an HTTP GET request.
absl::StatusOr< std::shared_ptr< httplib::Client > > GetOrCreateClient(const std::string &scheme, const std::string &host, int port)
Create or get cached httplib client for a host.
void SetTimeout(int timeout_seconds) override
Set a timeout for HTTP requests.
Headers ConvertHeaders(const void *httplib_headers) const
Convert httplib headers to our Headers type.
absl::StatusOr< HttpResponse > Post(const std::string &url, const std::string &body, const Headers &headers={}) override
Perform an HTTP POST request.
absl::Status ParseUrl(const std::string &url, std::string &scheme, std::string &host, int &port, std::string &path) const
Parse URL into components.
absl::StatusOr< HttpResponse > Delete(const std::string &url, const Headers &headers={}) override
Perform an HTTP DELETE request.
std::map< std::string, std::shared_ptr< httplib::Client > > client_cache_
absl::StatusOr< HttpResponse > Put(const std::string &url, const std::string &body, const Headers &headers={}) override
Perform an HTTP PUT request.
Abstract interface for HTTP client implementations.
Definition http_client.h:48
std::map< std::string, std::string > Headers
HTTP headers type definition.
Definition http_client.h:16