Handling http errors a bit more gracefully

This commit is contained in:
Ian Roddis
2021-12-30 14:29:56 -04:00
parent d9479f14e0
commit a4b26bce04

View File

@@ -276,16 +276,16 @@ namespace daggy {
auto response = HTTP_REQUEST(url, payload, method); auto response = HTTP_REQUEST(url, payload, method);
rj::Document doc; rj::Document doc;
if (response.code == HTTPCode::Server_Error) { try {
checkRJParse(doc.Parse(response.body.c_str()));
}
catch (std::exception &e) {
doc.SetObject(); doc.SetObject();
auto &alloc = doc.GetAllocator(); auto &alloc = doc.GetAllocator();
doc.AddMember("error", std::string message = (response.body.empty() ? e.what() : response.body);
rj::Value().SetString(response.body.c_str(), doc.AddMember(
response.body.size(), alloc), "error",
alloc); rj::Value().SetString(message.c_str(), message.size(), alloc), alloc);
}
else {
checkRJParse(doc.Parse(response.body.c_str()));
} }
return std::make_pair(response.code, std::move(doc)); return std::make_pair(response.code, std::move(doc));