From dc26ed563f5f6493fe643c56e48f571940df4fc9 Mon Sep 17 00:00:00 2001 From: marcelb Date: Thu, 30 Nov 2023 19:47:26 +0100 Subject: [PATCH] Enable chose http version, get response headers, http and curl status code --- lib/cppurl.hpp | 25 +++++++++++++++++++---- src/cppurl.cpp | 54 ++++++++++++++++++++++++++++++++++++++----------- test/test | Bin 198184 -> 55040 bytes test/test.cpp | 40 +++++++++++++++++++++--------------- 4 files changed, 87 insertions(+), 32 deletions(-) diff --git a/lib/cppurl.hpp b/lib/cppurl.hpp index 1bd13ce..5c79323 100644 --- a/lib/cppurl.hpp +++ b/lib/cppurl.hpp @@ -3,6 +3,7 @@ #include #include +#include #include #include @@ -10,19 +11,28 @@ namespace marcelb { using namespace std; -static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp); +static size_t bodyCallback(void *contents, size_t size, size_t nmemb, void *body_ptr); +static size_t headerCallback(char* buffer, size_t size, size_t nitems, void* header_ptr); +enum http_version { DEFAULT, HTTP1_0, HTTP1_1, HTTP2, HTTP2TLS, HTTP2PK, HTTP3 = 30}; class Curl { + // input CURL *curl; CURLcode res; - string readBuffer; struct curl_slist *headers = NULL; string _useragent; long _timeout = 0; - bool _sslvalidate = true; + bool _sslverifyoff = false; + http_version _protocol_v = DEFAULT; public: + // output + CURLcode curlStatus; + long httpStatus; + map responseHeader; + string body; + /** * Postavi zaglavlje s ključem i vrijednošću * Novi pozivi ne brišu stara zaglavlja, ponovljena se prepišu @@ -50,7 +60,14 @@ class Curl { * Omogući/onemogući validaciju certifikata kod SSL veza */ - Curl& sslvalidate(const bool sslvalidate_); + Curl& sslverifyoff(); + + /** + * Postavi verziju HTTP protokola + * HTTP1_0 - HTTP1_1 - HTTP2 - HTTP2TLS - HTTP2PK - HTTP3 + */ + + Curl& httpv(const http_version protocol_v); /** * Izvršiv HTTP GET zahtjev diff --git a/src/cppurl.cpp b/src/cppurl.cpp index 5fad449..3609fc5 100644 --- a/src/cppurl.cpp +++ b/src/cppurl.cpp @@ -3,11 +3,26 @@ using namespace marcelb; -static size_t marcelb::WriteCallback(void *contents, size_t size, size_t nmemb, void *userp) { - ((std::string*)userp)->append((char*)contents, size * nmemb); +static size_t marcelb::bodyCallback(void *contents, size_t size, size_t nmemb, void *body_ptr) { + ((string*)body_ptr)->append((char*)contents, size * nmemb); return size * nmemb; } +static size_t marcelb::headerCallback(char* buffer, size_t size, size_t nitems, void* header_ptr) { + string header_member = string(buffer); + string key, value; + + auto doublepoint = header_member.find(": "); + if (doublepoint < header_member.length()){ + key = header_member.substr(0, doublepoint); + value = header_member.substr(doublepoint+2, header_member.length()-2); + ((map*)header_ptr)->insert(make_pair(key, value)); + } + + return nitems * size; +} + + Curl& marcelb::Curl::header(const string& key, const string& value) { headers = curl_slist_append(headers, string(key + ": " + value).c_str()); return *this; @@ -31,15 +46,20 @@ Curl& marcelb::Curl::timeout(const long timeout_) { return *this; } -Curl& marcelb::Curl::sslvalidate(const bool sslvalidate_) { - _sslvalidate = sslvalidate_; +Curl& marcelb::Curl::sslverifyoff() { + _sslverifyoff = true; + return *this; +} + +Curl& marcelb::Curl::httpv(const http_version protocol_v) { + _protocol_v = protocol_v; return *this; } string marcelb::Curl::get(const string& req){ curl = curl_easy_init(); - readBuffer.clear(); + body.clear(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, req.c_str()); @@ -52,17 +72,27 @@ string marcelb::Curl::get(const string& req){ if (_timeout > 0) { curl_easy_setopt (curl, CURLOPT_TIMEOUT_MS , _timeout); } - if (!_sslvalidate) { - curl_easy_setopt (curl, CURLOPT_SSL_VERIFYPEER, _sslvalidate ? 1 : 0); - curl_easy_setopt (curl, CURLOPT_SSL_VERIFYHOST, _sslvalidate ? 1 : 0); + if (_sslverifyoff) { + curl_easy_setopt (curl, CURLOPT_SSL_VERIFYPEER, _sslverifyoff ? 0 : 1); + curl_easy_setopt (curl, CURLOPT_SSL_VERIFYHOST, _sslverifyoff ? 0 : 1); + } + if (_protocol_v > DEFAULT) { + curl_easy_setopt(curl, CURLOPT_HTTP_VERSION, (long)_protocol_v); + } + + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, bodyCallback); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, &body); + curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, headerCallback); + curl_easy_setopt(curl, CURLOPT_HEADERDATA, &responseHeader); + + curlStatus = curl_easy_perform(curl); + if(curlStatus == CURLE_OK) { + curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &httpStatus); } - curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback); - curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer); - res = curl_easy_perform(curl); curl_easy_cleanup(curl); } - return readBuffer; + return body; } Curl& marcelb::Curl::clearheader() { diff --git a/test/test b/test/test index 7d6dbaf2e26cfd09e13095ff64aa51c40fcf364f..1dc0ef38cf382740909fd32b36a8382312a32b89 100755 GIT binary patch literal 55040 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 VSN>(17`V<+4V6hDYrYlW{{yje$Z-Gw literal 198184 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 a^h=Bfe>u+1Io|)q-?>!Ntrx7H&i@B}j^bGW diff --git a/test/test.cpp b/test/test.cpp index 06cc09e..c5e654c 100644 --- a/test/test.cpp +++ b/test/test.cpp @@ -11,10 +11,17 @@ using namespace marcelb; int main () { - // Curl rest; - // string header_value = "jebiga"; - // rest.header("API", header_value); - // cout << rest.get("https://reqres.in/api/users/2") << endl; + Curl rest; + string header_value = "jebiga"; + rest.header("API", header_value); + cout << rest.get("https://reqres.in/api/users/2") << endl << + "Curl status " << rest.curlStatus << endl << + " http status " << rest.httpStatus << endl; + + for (auto header : rest.responseHeader) { + cout << header.first << " " << header.second << endl; + } + // vector thr; @@ -47,20 +54,21 @@ int main () { // t1.join(); // t2.join(); - vector> debx_responses; + // vector> debx_responses; - for (uint i=0; i<4; i++) { - debx_responses.push_back(async(launch::async, [&](){ - Curl rest; - // rest.timeout(6000); - rest.sslvalidate(false); - return rest.get("https://lab-it.ddns.net"); - })); - } + // for (uint i=0; i<4; i++) { + // debx_responses.push_back(async(launch::async, [&](){ + // Curl rest; + // // rest.timeout(6000); + // rest.sslverifyoff().httpv(HTTP2); + // return rest.get("https://lab-it.ddns.net"); + // })); + // } - for (uint i=0; i<4; i++) { - cout << debx_responses[i].get() << endl << endl; - } + // for (uint i=0; i<4; i++) { + // // cout << debx_responses[i].get() << endl << endl; + // debx_responses[i].get(); + // } } \ No newline at end of file