ndmspc v1.2.0-0.1.rc7
Loading...
Searching...
No Matches
NHttpRequest.h
1#ifndef Ndmspc_NHttpRequest_H
2#define Ndmspc_NHttpRequest_H
3#include <curl/curl.h>
4#include <sstream>
5#include <string>
6#include <vector>
7
8namespace Ndmspc {
9
22 public:
27
31 virtual ~NHttpRequest();
32
42 std::string get(const std::string & url, const std::string & cert_path = "", const std::string & key_path = "",
43 const std::string & key_password_file = "", bool insecure = false);
44
55 std::string post(const std::string & url, const std::string & post_data, const std::string & cert_path = "",
56 const std::string & key_path = "", const std::string & key_password_file = "",
57 bool insecure = false);
58
68 int head(const std::string & url, const std::string & cert_path = "", const std::string & key_path = "",
69 const std::string & key_password_file = "", bool insecure = false);
70
71 private:
84 CURLcode request(const std::string & method, const std::string & url, const std::string & data,
85 std::ostringstream & response, const std::string & cert_path, const std::string & key_path,
86 const std::string & key_password_file, bool insecure);
87
96 static size_t WriteCallback(void * contents, size_t size, size_t nmemb, void * userp);
97
106 static size_t HeaderCallback(char * buffer, size_t size, size_t nitems, void * userdata);
107
108 CURL * curl;
109 struct curl_slist * headers;
110 std::vector<std::string> received_headers;
111
116 void throw_curl_error(CURLcode res) const;
117};
118} // namespace Ndmspc
119#endif
std::string post(const std::string &url, const std::string &post_data, const std::string &cert_path="", const std::string &key_path="", const std::string &key_password_file="", bool insecure=false)
Performs an HTTP POST request.
virtual ~NHttpRequest()
Destroys the NHttpRequest instance.
std::string get(const std::string &url, const std::string &cert_path="", const std::string &key_path="", const std::string &key_password_file="", bool insecure=false)
Performs an HTTP GET request.
static size_t HeaderCallback(char *buffer, size_t size, size_t nitems, void *userdata)
Callback for handling response headers.
int head(const std::string &url, const std::string &cert_path="", const std::string &key_path="", const std::string &key_password_file="", bool insecure=false)
Performs an HTTP HEAD request.
std::vector< std::string > received_headers
Received response headers.
static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp)
Callback for writing response data.
struct curl_slist * headers
List of custom headers.
NHttpRequest()
Constructs a new NHttpRequest instance.
CURL * curl
libcurl handle
CURLcode request(const std::string &method, const std::string &url, const std::string &data, std::ostringstream &response, const std::string &cert_path, const std::string &key_path, const std::string &key_password_file, bool insecure)
Internal method to perform an HTTP request.
void throw_curl_error(CURLcode res) const
Throws an exception if a CURL error occurs.
Global callback function for libwebsockets client events.