Ember
A C++ 20 'game engine' built with SDL3 with wide platform support.
http_client.h
Go to the documentation of this file.
1 #pragma once
3 #include <curl/curl.h>
4 
5 struct HttpRequest {
6  const char* url = "";
7  std::string method = "GET";
8  std::map<std::string, std::string> headers;
9  std::string body;
10 
11  explicit HttpRequest(const char* url = "", const std::string& method = "GET") : url(url), method(method) {}
12 };
13 
14 struct HttpResponse {
15  int status_code = 0;
16  std::string body;
17  std::map<std::string, std::string> headers;
18 };
19 
38 class HttpClient {
39 public:
40  HttpClient();
41  ~HttpClient();
42 
44  [[nodiscard]] HttpResponse request(const HttpRequest& request) const;
45 
47  void request_async(HttpRequest request, const std::function<void(const HttpResponse&)>& callback) const;
48 
49 };
Simple HTTP client.
Definition: http_client.h:38
HttpResponse request(const HttpRequest &request) const
Blocking (not supported on Emscripten)
Definition: http_client.cpp:24
void request_async(HttpRequest request, const std::function< void(const HttpResponse &)> &callback) const
Non-blocking (cross-platform)
Definition: http_client.cpp:77
HttpClient()
Definition: http_client.cpp:16
~HttpClient()
Definition: http_client.cpp:20
Definition: http_client.h:5
HttpRequest(const char *url="", const std::string &method="GET")
Definition: http_client.h:11
std::string body
Request body for POST/PUT requests.
Definition: http_client.h:9
std::string method
HTTP method (GET, POST, PUT, PATCH, DELETE).
Definition: http_client.h:7
std::map< std::string, std::string > headers
Definition: http_client.h:8
const char * url
URL to send the request to.
Definition: http_client.h:6
Definition: http_client.h:14
int status_code
HTTP status code.
Definition: http_client.h:15
std::string body
Response body.
Definition: http_client.h:16
std::map< std::string, std::string > headers
Response headers.
Definition: http_client.h:17