yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
http_client.h
Go to the documentation of this file.
1#ifndef YAZE_APP_NET_HTTP_CLIENT_H_
2#define YAZE_APP_NET_HTTP_CLIENT_H_
3
4#include <map>
5#include <string>
6
7#include "absl/status/status.h"
8#include "absl/status/statusor.h"
9
10namespace yaze {
11namespace net {
12
16using Headers = std::map<std::string, std::string>;
17
23 int status_code = 0;
24 std::string body;
26
27 bool IsSuccess() const {
28 return status_code >= 200 && status_code < 300;
29 }
30
31 bool IsClientError() const {
32 return status_code >= 400 && status_code < 500;
33 }
34
35 bool IsServerError() const {
36 return status_code >= 500 && status_code < 600;
37 }
38};
39
49 public:
50 virtual ~IHttpClient() = default;
51
58 virtual absl::StatusOr<HttpResponse> Get(
59 const std::string& url,
60 const Headers& headers = {}) = 0;
61
69 virtual absl::StatusOr<HttpResponse> Post(
70 const std::string& url,
71 const std::string& body,
72 const Headers& headers = {}) = 0;
73
81 virtual absl::StatusOr<HttpResponse> Put(
82 const std::string& url,
83 const std::string& body,
84 const Headers& headers = {}) {
85 // Default implementation returns not implemented
86 return absl::UnimplementedError("PUT method not implemented");
87 }
88
95 virtual absl::StatusOr<HttpResponse> Delete(
96 const std::string& url,
97 const Headers& headers = {}) {
98 // Default implementation returns not implemented
99 return absl::UnimplementedError("DELETE method not implemented");
100 }
101
106 virtual void SetTimeout(int timeout_seconds) {
107 timeout_seconds_ = timeout_seconds;
108 }
109
114 int GetTimeout() const { return timeout_seconds_; }
115
116 protected:
117 int timeout_seconds_ = 30; // Default 30 second timeout
118};
119
120} // namespace net
121} // namespace yaze
122
123#endif // YAZE_APP_NET_HTTP_CLIENT_H_
Abstract interface for HTTP client implementations.
Definition http_client.h:48
virtual absl::StatusOr< HttpResponse > Get(const std::string &url, const Headers &headers={})=0
Perform an HTTP GET request.
virtual absl::StatusOr< HttpResponse > Put(const std::string &url, const std::string &body, const Headers &headers={})
Perform an HTTP PUT request.
Definition http_client.h:81
virtual ~IHttpClient()=default
int GetTimeout() const
Get the current timeout setting.
virtual void SetTimeout(int timeout_seconds)
Set a timeout for HTTP requests.
virtual absl::StatusOr< HttpResponse > Delete(const std::string &url, const Headers &headers={})
Perform an HTTP DELETE request.
Definition http_client.h:95
virtual absl::StatusOr< HttpResponse > Post(const std::string &url, const std::string &body, const Headers &headers={})=0
Perform an HTTP POST request.
std::map< std::string, std::string > Headers
HTTP headers type definition.
Definition http_client.h:16
HTTP response structure containing status, body, and headers.
Definition http_client.h:22
bool IsServerError() const
Definition http_client.h:35
bool IsClientError() const
Definition http_client.h:31