ndmspc  v1.2.0-0.1.rc3
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 
8 namespace Ndmspc {
9 
21 class NHttpRequest {
22  public:
26  NHttpRequest();
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
Provides HTTP request functionality using libcurl.
Definition: NHttpRequest.h:21
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.
Definition: NHttpRequest.h:110
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.
Definition: NHttpRequest.h:109
NHttpRequest()
Constructs a new NHttpRequest instance.
CURL * curl
libcurl handle
Definition: NHttpRequest.h:108
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.