Add retry support for failed LP requests

main
Simon Quigley 6 days ago
parent 7879ec07be
commit 48518fc076

@ -257,26 +257,33 @@ std::optional<std::string> launchpad::api_get(const std::string& endpoint, const
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
CURLcode res = curl_easy_perform(curl); bool tries = 0;
long http_code = 0; long http_code = 0;
if (res != CURLE_OK) {
std::cerr << "CURL GET error: " << curl_easy_strerror(res) << std::endl;
}
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_code); while (tries < 5) {
curl_slist_free_all(headers); tries++;
curl_easy_cleanup(curl); CURLcode res = curl_easy_perform(curl);
if (res != CURLE_OK) {
std::cerr << "CURL GET error: " << curl_easy_strerror(res) << std::endl;
}
if (res != CURLE_OK) { curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_code);
return std::nullopt; curl_slist_free_all(headers);
} curl_easy_cleanup(curl);
if (http_code >= 400) { if (res != CURLE_OK) {
std::cerr << "HTTP GET request to " << url << " failed with code: " << http_code << "\nResponse: " << readBuffer << std::endl; continue;
return std::nullopt; }
if (http_code >= 400) {
continue;
}
return readBuffer;
} }
return readBuffer; std::cerr << "HTTP GET request to " << url << " failed with code: " << http_code << "\nResponse: " << readBuffer << std::endl;
return std::nullopt;
} }
std::optional<std::string> launchpad::api_post( std::optional<std::string> launchpad::api_post(
@ -327,26 +334,32 @@ std::optional<std::string> launchpad::api_post(
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
CURLcode res = curl_easy_perform(curl); bool tries = 0;
long http_code = 0; long http_code = 0;
if (res != CURLE_OK) {
std::cerr << "CURL POST error: " << curl_easy_strerror(res) << std::endl;
}
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_code); while (tries < 5) {
curl_slist_free_all(headers); tries++;
curl_easy_cleanup(curl); CURLcode res = curl_easy_perform(curl);
if (res != CURLE_OK) {
std::cerr << "CURL POST error: " << curl_easy_strerror(res) << std::endl;
}
if (res != CURLE_OK) { curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_code);
return std::nullopt; curl_slist_free_all(headers);
} curl_easy_cleanup(curl);
if (http_code >= 400) { if (res != CURLE_OK) {
std::cerr << "HTTP POST request to " << url << " failed with code: " << http_code << "\nResponse: " << readBuffer << std::endl; continue;
return std::nullopt; }
}
return readBuffer; if (http_code >= 400) {
continue;
}
return readBuffer;
}
std::cerr << "HTTP POST request to " << url << " failed with code: " << http_code << "\nResponse: " << readBuffer << std::endl;
return std::nullopt;
} }
std::optional<std::string> launchpad::api_patch(const std::string& endpoint, const nlohmann::json& data) { std::optional<std::string> launchpad::api_patch(const std::string& endpoint, const nlohmann::json& data) {

Loading…
Cancel
Save