@@ -70,10 +70,13 @@ using namespace lklibs;
70
70
71
71
int main () {
72
72
73
- HttpRequest httpRequest;
73
+ HttpRequest httpRequest("https://api.myproject.com") ;
74
74
75
75
// The simplest but slowest method if multiple calls will be made
76
- auto response = httpRequest.getRequest("https://api.myproject.com?param1=7¶m2=test").get();
76
+ auto response = httpRequest
77
+ .setQueryString("param1=7¶m2=test")
78
+ .send()
79
+ .get();
77
80
78
81
std::cout << "Succeed: " << response.succeed << std::endl;
79
82
std::cout << "Http Status Code: " << response.statusCode << std::endl;
@@ -98,13 +101,17 @@ using namespace lklibs;
98
101
99
102
int main () {
100
103
101
- HttpRequest httpRequest;
102
-
103
- auto response1 = httpRequest.getRequest("https://api.myproject.com/foo").get();
104
- auto response2 = httpRequest.getRequest("https://api.myproject.com/bar").get();
105
- auto response3 = httpRequest.getRequest("https://api.myproject.com/baz").get();
106
- auto response4 = httpRequest.getRequest("https://api.myproject.com/qux").get();
107
- auto response5 = httpRequest.getRequest("https://api.myproject.com/quux").get();
104
+ HttpRequest httpRequest1("https://api.myproject.com/foo");
105
+ HttpRequest httpRequest2("https://api.myproject.com/bar");
106
+ HttpRequest httpRequest3("https://api.myproject.com/baz");
107
+ HttpRequest httpRequest4("https://api.myproject.com/qux");
108
+ HttpRequest httpRequest5("https://api.myproject.com/quux");
109
+
110
+ auto response1 = httpRequest1.send().get();
111
+ auto response2 = httpRequest2.send().get();
112
+ auto response3 = httpRequest3.send().get();
113
+ auto response4 = httpRequest4.send().get();
114
+ auto response5 = httpRequest5.send().get();
108
115
109
116
// Takes 2.5 seconds in total
110
117
@@ -124,13 +131,17 @@ using namespace lklibs;
124
131
125
132
int main () {
126
133
127
- HttpRequest httpRequest;
128
-
129
- auto future1 = httpRequest.getRequest("https://api.myproject.com/foo");
130
- auto future2 = httpRequest.getRequest("https://api.myproject.com/bar");
131
- auto future3 = httpRequest.getRequest("https://api.myproject.com/baz");
132
- auto future4 = httpRequest.getRequest("https://api.myproject.com/qux");
133
- auto future5 = httpRequest.getRequest("https://api.myproject.com/quux");
134
+ HttpRequest httpRequest1("https://api.myproject.com/foo");
135
+ HttpRequest httpRequest2("https://api.myproject.com/bar");
136
+ HttpRequest httpRequest3("https://api.myproject.com/baz");
137
+ HttpRequest httpRequest4("https://api.myproject.com/qux");
138
+ HttpRequest httpRequest5("https://api.myproject.com/quux");
139
+
140
+ auto future1 = httpRequest.send();
141
+ auto future2 = httpRequest.send();
142
+ auto future3 = httpRequest.send();
143
+ auto future4 = httpRequest.send();
144
+ auto future5 = httpRequest.send();
134
145
135
146
auto response1 = future1.get();
136
147
auto response2 = future2.get();
@@ -166,9 +177,9 @@ using namespace lklibs;
166
177
167
178
int main () {
168
179
169
- HttpRequest httpRequest;
180
+ HttpRequest httpRequest("https://www.myinvalidurl.com") ;
170
181
171
- auto response = httpRequest.getRequest("https://www.myinvalidurl.com" ).get();
182
+ auto response = httpRequest.send( ).get();
172
183
173
184
// Instead of throwing an exception, the succeed field of the response object is set to false
174
185
std::cout << "Succeed: " << response.succeed << std::endl;
@@ -200,10 +211,13 @@ using namespace lklibs;
200
211
201
212
int main () {
202
213
203
- HttpRequest httpRequest;
214
+ HttpRequest httpRequest("https://api.myproject.com/image/7") ;
204
215
205
- // If you need to retrieve binary data such as an image, just pass the "returnAsBinary" parameter as true
206
- auto response = httpRequest.getRequest("https://api.myproject.com/image/7", true).get();
216
+ // If you need to retrieve binary data such as an image, just call the "returnAsBinary" method before send
217
+ auto response = httpRequest
218
+ .returnAsBinary()
219
+ .send()
220
+ .get();
207
221
208
222
std::cout << "Succeed: " << response.succeed << std::endl;
209
223
std::cout << "Http Status Code: " << response.statusCode << std::endl;
@@ -229,16 +243,15 @@ using namespace lklibs;
229
243
230
244
int main () {
231
245
232
- HttpRequest httpRequest;
233
-
234
- // You can send custom headers in a string/string map
235
- auto headers = std::map<std::string, std::string>();
236
-
237
- headers["Custom-Header1"] = "value1";
238
- headers["Custom-Header2"] = "value2";
239
-
240
- auto response = httpRequest.getRequest("https://api.myproject.com?param1=7¶m2=test", headers).get();
241
-
246
+ HttpRequest httpRequest("https://api.myproject.com?param1=7¶m2=test");
247
+
248
+ // You can send custom headers as key-value pairs
249
+ auto response = httpRequest
250
+ .addHeader("Custom-Header1", "value1")
251
+ .addHeader("Custom-Header2", "value2")
252
+ .send()
253
+ .get();
254
+
242
255
std::cout << "Succeed: " << response.succeed << std::endl;
243
256
244
257
return 0;
@@ -259,12 +272,14 @@ using namespace lklibs;
259
272
260
273
int main () {
261
274
262
- HttpRequest httpRequest;
275
+ HttpRequest httpRequest("https://api.myproject.com") ;
263
276
264
277
// You can send a POST request with form data in the payload
265
- std::string payload = "param1=7¶m2=test";
266
-
267
- auto response = httpRequest.postRequest("https://api.myproject.com", payload).get();
278
+ auto response = httpRequest
279
+ .setMethod(HttpMethod::POST)
280
+ .setPayload("param1=7¶m2=test")
281
+ .send()
282
+ .get();
268
283
269
284
std::cout << "Succeed: " << response.succeed << std::endl;
270
285
std::cout << "Http Status Code: " << response.statusCode << std::endl;
@@ -288,16 +303,15 @@ using namespace lklibs;
288
303
289
304
int main () {
290
305
291
- HttpRequest httpRequest;
292
-
293
- std::string payload = R"({"param1": 7, "param2": "test"})";
294
-
306
+ HttpRequest httpRequest("https://api.myproject.com");
307
+
295
308
// You need to send the "Content-Type" as "application/json" in the HTTP Header, if you need to send json data in the payload
296
- auto headers = std::map<std::string, std::string>();
297
-
298
- headers["Content-Type"] = "application/json";
299
-
300
- auto response = httpRequest.postRequest("https://api.myproject.com", payload, headers).get();
309
+ auto response = httpRequest
310
+ .setMethod(HttpMethod::POST)
311
+ .setPayload(R"({"param1": 7, "param2": "test"})")
312
+ .addHeader("Content-Type", "application/json")
313
+ .send()
314
+ .get();
301
315
302
316
std::cout << "Succeed: " << response.succeed << std::endl;
303
317
std::cout << "Http Status Code: " << response.statusCode << std::endl;
@@ -320,13 +334,29 @@ using namespace lklibs;
320
334
321
335
int main () {
322
336
323
- HttpRequest httpRequest ;
337
+ HttpRequest httpRequest1("https://api.myproject.com") ;
324
338
325
- std::string payload = "param1=7¶m2=test";
339
+ auto future1 = httpRequest
340
+ .setMethod(HttpMethod::PUT)
341
+ .setPayload("param1=7¶m2=test")
342
+ .send()
343
+ .get();
344
+
345
+ HttpRequest httpRequest2("https://api.myproject.com");
326
346
327
- auto future1 = httpRequest.putRequest("https://api.myproject.com", payload);
328
- auto future2 = httpRequest.deleteRequest("https://api.myproject.com", payload);
329
- auto future3 = httpRequest.patchRequest("https://api.myproject.com?param1=7¶m2=test");
347
+ auto future2 = httpRequest
348
+ .setMethod(HttpMethod::DELETE_)
349
+ .setPayload("param1=7¶m2=test")
350
+ .send()
351
+ .get();
352
+
353
+ HttpRequest httpRequest3("https://api.myproject.com");
354
+
355
+ auto future3 = httpRequest
356
+ .setMethod(HttpMethod::PATCH)
357
+ .setQueryString("param1=7¶m2=test")
358
+ .send()
359
+ .get();
330
360
331
361
auto response1 = future1.get();
332
362
auto response2 = future2.get();
@@ -351,12 +381,10 @@ using namespace lklibs;
351
381
352
382
int main () {
353
383
354
- HttpRequest httpRequest;
355
-
356
- // If you need to ignore SSL errors, you can set the "ignoreSslErrors" field to true
357
- httpRequest.ignoreSslErrors = true;
384
+ HttpRequest httpRequest("https://api.myinvalidssl.com");
358
385
359
- auto response = httpRequest.getRequest("https://api.myinvalidssl.com").get();
386
+ // If you need to ignore SSL errors, you can call "ignoreSslErrors" method before sending the request
387
+ auto response = httpRequest.ignoreSslErrors().send().get();
360
388
361
389
return 0;
362
390
}
@@ -381,58 +409,21 @@ section to the documentation.
381
409
382
410
## Full function list
383
411
384
- You can find the complete list of functions in the library below. In fact, they are just
385
- overloaded versions of 5 functions in total .
412
+ You can find the complete list of functions in the library below. Since all methods except
413
+ send return the class itself, they can be added one after the other like a chain .
386
414
387
415
> [ !TIP]
388
416
> All methods and parameters descriptions are also available within the code as comment for IDEs.
389
417
390
418
``` cpp
391
- - getRequest
392
- - std::future<HttpResult> getRequest (const std::string &url)
393
- - std::future<HttpResult > getRequest(const std::string &url, bool returnAsBinary)
394
- - std::future<HttpResult > getRequest(const std::string &url, const std::map<std::string, std::string> &headers)
395
- - std::future<HttpResult > getRequest(const std::string &url, bool returnAsBinary, const std::map<std::string, std::string> &headers)
396
-
397
-
398
- - postRequest
399
- - std::future<HttpResult > postRequest(const std::string &url)
400
- - std::future<HttpResult > postRequest(const std::string &url, const std::string &payload)
401
- - std::future<HttpResult > postRequest(const std::string &url, bool returnAsBinary)
402
- - std::future<HttpResult > postRequest(const std::string &url, const std::map<std::string, std::string> &headers)
403
- - std::future<HttpResult > postRequest(const std::string &url, const std::string &payload, bool returnAsBinary)
404
- - std::future<HttpResult > postRequest(const std::string &url, const std::string &payload, const std::map<std::string, std::string> &headers)
405
- - std::future<HttpResult > postRequest(const std::string &url, bool returnAsBinary, const std::map<std::string, std::string> &headers)
406
- - std::future<HttpResult > postRequest(const std::string &url, const std::string &payload, bool returnAsBinary, const std::map<std::string, std::string> &headers)
407
-
408
-
409
- - putRequest
410
- - std::future<HttpResult > putRequest(const std::string &url)
411
- - std::future<HttpResult > putRequest(const std::string &url, const std::string &payload)
412
- - std::future<HttpResult > putRequest(const std::string &url, bool returnAsBinary)
413
- - std::future<HttpResult > putRequest(const std::string &url, const std::map<std::string, std::string> &headers)
414
- - std::future<HttpResult > putRequest(const std::string &url, const std::string &payload, bool returnAsBinary)
415
- - std::future<HttpResult > putRequest(const std::string &url, const std::string &payload, const std::map<std::string, std::string> &headers)
416
- - std::future<HttpResult > putRequest(const std::string &url, bool returnAsBinary, const std::map<std::string, std::string> &headers)
417
- - std::future<HttpResult > putRequest(const std::string &url, const std::string &payload, bool returnAsBinary, const std::map<std::string, std::string> &headers)
418
-
419
-
420
- - deleteRequest
421
- - std::future<HttpResult > deleteRequest(const std::string &url)
422
- - std::future<HttpResult > deleteRequest(const std::string &url, const std::string &payload)
423
- - std::future<HttpResult > deleteRequest(const std::string &url, bool returnAsBinary)
424
- - std::future<HttpResult > deleteRequest(const std::string &url, const std::map<std::string, std::string> &headers)
425
- - std::future<HttpResult > deleteRequest(const std::string &url, const std::string &payload, bool returnAsBinary)
426
- - std::future<HttpResult > deleteRequest(const std::string &url, const std::string &payload, const std::map<std::string, std::string> &headers)
427
- - std::future<HttpResult > deleteRequest(const std::string &url, bool returnAsBinary, const std::map<std::string, std::string> &headers)
428
- - std::future<HttpResult > deleteRequest(const std::string &url, const std::string &payload, bool returnAsBinary, const std::map<std::string, std::string> &headers)
429
-
430
-
431
- - patchRequest
432
- - std::future<HttpResult > patchRequest(const std::string &url)
433
- - std::future<HttpResult > patchRequest(const std::string &url, bool returnAsBinary)
434
- - std::future<HttpResult > patchRequest(const std::string &url, const std::map<std::string, std::string> &headers)
435
- - std::future<HttpResult > patchRequest(const std::string &url, bool returnAsBinary, const std::map<std::string, std::string> &headers)
419
+ - HttpRequest &setMethod (const HttpMethod &method)
420
+ - HttpRequest &setQueryString(const std::string &queryString)
421
+ - HttpRequest &setPayload(const std::string &payload)
422
+ - HttpRequest &returnAsBinary()
423
+ - HttpRequest &ignoreSslErrors()
424
+ - HttpRequest &addHeader(const std::string &key, const std::string &value)
425
+ - std::future<HttpResult > send() noexcept
426
+
436
427
```
437
428
438
429
0 commit comments