aboutsummaryrefslogtreecommitdiff
path: root/src/zen/zen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/zen/zen.cpp')
-rw-r--r--src/zen/zen.cpp90
1 files changed, 30 insertions, 60 deletions
diff --git a/src/zen/zen.cpp b/src/zen/zen.cpp
index 0381dd15c..1d2faba7e 100644
--- a/src/zen/zen.cpp
+++ b/src/zen/zen.cpp
@@ -55,7 +55,6 @@
#endif
ZEN_THIRD_PARTY_INCLUDES_START
-#include <cpr/cpr.h>
#include <spdlog/sinks/ansicolor_sink.h>
#include <spdlog/spdlog.h>
#include <gsl/gsl-lite.hpp>
@@ -275,66 +274,37 @@ ZenCmdBase::GetSubCommand(cxxopts::Options&,
}
static ReturnCode
-GetReturnCodeFromHttpResult(int Error, HttpResponseCode ResponseCode)
+GetReturnCodeFromHttpResult(const HttpClientError& Ex)
{
- if ((cpr::ErrorCode)Error != cpr::ErrorCode::OK)
- {
- switch ((cpr::ErrorCode)Error)
- {
- case cpr::ErrorCode::CONNECTION_FAILURE:
- return ReturnCode::kHttpCantConnectError;
- case cpr::ErrorCode::HOST_RESOLUTION_FAILURE:
- case cpr::ErrorCode::PROXY_RESOLUTION_FAILURE:
- return ReturnCode::kHttpNoHost;
- case cpr::ErrorCode::INTERNAL_ERROR:
- case cpr::ErrorCode::NETWORK_RECEIVE_ERROR:
- case cpr::ErrorCode::NETWORK_SEND_FAILURE:
- case cpr::ErrorCode::OPERATION_TIMEDOUT:
- return ReturnCode::kHttpTimeout;
- case cpr::ErrorCode::SSL_CONNECT_ERROR:
- case cpr::ErrorCode::SSL_LOCAL_CERTIFICATE_ERROR:
- case cpr::ErrorCode::SSL_REMOTE_CERTIFICATE_ERROR:
- case cpr::ErrorCode::SSL_CACERT_ERROR:
- case cpr::ErrorCode::GENERIC_SSL_ERROR:
- return ReturnCode::kHttpSLLError;
- default:
- return ReturnCode::kHttpOtherClientError;
- }
- }
- else if (IsHttpSuccessCode(ResponseCode))
- {
+ HttpClientError::ResponseClass ResponseClass = Ex.GetResponseClass();
+
+ if (ResponseClass == HttpClientError::ResponseClass::kSuccess)
return ReturnCode::kSuccess;
- }
- else
+
+ switch (ResponseClass)
{
- switch (ResponseCode)
- {
- case HttpResponseCode::Unauthorized:
- return ReturnCode::kHttpUnauthorized;
- case HttpResponseCode::NotFound:
- return ReturnCode::kHttpNotFound;
- case HttpResponseCode::Forbidden:
- return ReturnCode::kHttpForbidden;
- case HttpResponseCode::Conflict:
- return ReturnCode::kHttpConflict;
- case HttpResponseCode::InternalServerError:
- return ReturnCode::kHttpInternalServerError;
- case HttpResponseCode::ServiceUnavailable:
- return ReturnCode::kHttpServiceUnavailable;
- case HttpResponseCode::BadGateway:
- return ReturnCode::kHttpBadGateway;
- case HttpResponseCode::GatewayTimeout:
- return ReturnCode::kHttpGatewayTimeout;
- default:
- if (ResponseCode >= HttpResponseCode::InternalServerError)
- {
- return ReturnCode::kHttpOtherServerError;
- }
- else
- {
- return ReturnCode::kHttpOtherClientError;
- }
- }
+#define HANDLE_CASE(ErrorClass) \
+ case HttpClientError::ResponseClass::ErrorClass: \
+ return ReturnCode::ErrorClass
+
+ HANDLE_CASE(kHttpOtherClientError);
+ HANDLE_CASE(kHttpCantConnectError);
+ HANDLE_CASE(kHttpNotFound);
+ HANDLE_CASE(kHttpUnauthorized);
+ HANDLE_CASE(kHttpSLLError);
+ HANDLE_CASE(kHttpForbidden);
+ HANDLE_CASE(kHttpTimeout);
+ HANDLE_CASE(kHttpConflict);
+ HANDLE_CASE(kHttpNoHost);
+ HANDLE_CASE(kHttpOtherServerError);
+ HANDLE_CASE(kHttpInternalServerError);
+ HANDLE_CASE(kHttpServiceUnavailable);
+ HANDLE_CASE(kHttpBadGateway);
+ HANDLE_CASE(kHttpGatewayTimeout);
+#undef HANDLE_CASE
+
+ default:
+ return ReturnCode::kOtherError;
}
}
@@ -1093,7 +1063,7 @@ main(int argc, char** argv)
catch (const HttpClientError& Ex)
{
ZEN_CONSOLE_ERROR("Operation failed due to a http error: {}", Ex.what());
- ReturnCode Result = GetReturnCodeFromHttpResult(Ex.m_Error, Ex.m_ResponseCode);
+ ReturnCode Result = GetReturnCodeFromHttpResult(Ex);
return (int)Result;
}
catch (const AssertException& Ex)
@@ -1144,7 +1114,7 @@ main(int argc, char** argv)
catch (const HttpClientError& Ex)
{
printf("Error: Operation failed due to a http error: %s", Ex.what());
- ReturnCode Result = GetReturnCodeFromHttpResult(Ex.m_Error, Ex.m_ResponseCode);
+ ReturnCode Result = GetReturnCodeFromHttpResult(Ex);
return (int)Result;
}
catch (const AssertException& Ex)