add httpGet error handling

This commit is contained in:
MihailRis
2024-11-11 14:47:09 +03:00
parent d7389c2220
commit 4328c83c79
3 changed files with 36 additions and 11 deletions
+18 -5
View File
@@ -9,7 +9,9 @@ using namespace network;
static debug::Logger logger("network");
size_t write_callback(char* ptr, size_t size, size_t nmemb, void* userdata) {
static size_t write_callback(
char* ptr, size_t size, size_t nmemb, void* userdata
) {
auto& buffer = *reinterpret_cast<std::vector<char>*>(userdata);
size_t psize = buffer.size();
buffer.resize(psize + size * nmemb);
@@ -30,7 +32,8 @@ public:
curl_easy_cleanup(curl);
}
void get(const std::string& url, const OnResponse& callback) override {
void get(const std::string& url, OnResponse onResponse, OnReject onReject)
override {
std::vector<char> buffer;
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
@@ -45,8 +48,16 @@ public:
totalDownload += size;
}
totalDownload += buffer.size();
if (onResponse) {
onResponse(std::move(buffer));
}
} else {
auto message = curl_easy_strerror(res);
logger.error() << message << " (" << url << ")";
if (onReject) {
onReject(message);
}
}
callback(res, std::move(buffer));
}
size_t getTotalUpload() const override {
@@ -71,8 +82,10 @@ Network::Network(std::unique_ptr<Http> http) : http(std::move(http)) {
Network::~Network() = default;
void Network::httpGet(const std::string& url, const OnResponse& callback) {
http->get(url, callback);
void Network::httpGet(
const std::string& url, OnResponse onResponse, OnReject onReject
) {
http->get(url, onResponse, onReject);
}
size_t Network::getTotalUpload() const {