forked from mrtazz/restclient-cpp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrestclient.cc
More file actions
159 lines (147 loc) · 3.8 KB
/
restclient.cc
File metadata and controls
159 lines (147 loc) · 3.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
/**
* @file restclient.cpp
* @brief implementation of the restclient class
*
* This just provides static wrappers around the Connection class REST
* methods. However since I didn't want to have to pull in a whole URI parsing
* library just now, the Connection constructor is passed an empty string and
* the full URL is passed to the REST methods. All those methods to is
* concatenate them anyways. So this should do for now.
*
* @author Daniel Schauenberg <[email protected]>
*/
#include "restclient-cpp/restclient.h"
#include <curl/curl.h>
#include "restclient-cpp/version.h"
#include "restclient-cpp/connection.h"
/**
* @brief global init function. Call this before you start any threads.
*/
int RestClient::init() {
CURLcode res = curl_global_init(CURL_GLOBAL_ALL);
if (res == CURLE_OK) {
return 0;
} else {
return 1;
}
}
/**
* @brief global disable function. Call this before you terminate your
* program.
*/
void RestClient::disable() {
curl_global_cleanup();
}
/**
* @brief HTTP GET method
*
* @param url to query
*
* @return response struct
*/
RestClient::Response RestClient::get(const std::string& url) {
RestClient::Response ret;
RestClient::Connection *conn = new RestClient::Connection("");
ret = conn->get(url);
delete conn;
return ret;
}
/**
* @brief HTTP POST method
*
* @param url to query
* @param ctype content type as string
* @param data HTTP POST body
*
* @return response struct
*/
RestClient::Response RestClient::post(const std::string& url,
const std::string& ctype,
const std::string& data) {
RestClient::Response ret;
RestClient::Connection *conn = new RestClient::Connection("");
conn->AppendHeader("Content-Type", ctype);
ret = conn->post(url, data);
delete conn;
return ret;
}
/**
* @brief HTTP PUT method
*
* @param url to query
* @param ctype content type as string
* @param data HTTP PUT body
*
* @return response struct
*/
RestClient::Response RestClient::put(const std::string& url,
const std::string& ctype,
const std::string& data) {
RestClient::Response ret;
RestClient::Connection *conn = new RestClient::Connection("");
conn->AppendHeader("Content-Type", ctype);
ret = conn->put(url, data);
delete conn;
return ret;
}
/**
* @brief HTTP PATCH method
*
* @param url to query
* @param ctype content type as string
* @param data HTTP PATCH body
*
* @return response struct
*/
RestClient::Response RestClient::patch(const std::string& url,
const std::string& ctype,
const std::string& data) {
RestClient::Response ret;
RestClient::Connection *conn = new RestClient::Connection("");
conn->AppendHeader("Content-Type", ctype);
ret = conn->patch(url, data);
delete conn;
return ret;
}
/**
* @brief HTTP DELETE method
*
* @param url to query
*
* @return response struct
*/
RestClient::Response RestClient::del(const std::string& url) {
RestClient::Response ret;
RestClient::Connection *conn = new RestClient::Connection("");
ret = conn->del(url);
delete conn;
return ret;
}
/**
* @brief HTTP HEAD method
*
* @param url to query
*
* @return response struct
*/
RestClient::Response RestClient::head(const std::string& url) {
RestClient::Response ret;
RestClient::Connection *conn = new RestClient::Connection("");
ret = conn->head(url);
delete conn;
return ret;
}
/**
* @brief HTTP OPTIONS method
*
* @param url to query
*
* @return response struct
*/
RestClient::Response RestClient::options(const std::string& url) {
RestClient::Response ret;
RestClient::Connection *conn = new RestClient::Connection("");
ret = conn->options(url);
delete conn;
return ret;
}