11#ifndef CPR_ERROR_H
22#define CPR_ERROR_H
33
4+ #include < unordered_map>
45#include < cstdint>
56#include < string>
67
@@ -89,6 +90,71 @@ enum class ErrorCode {
8990 UNKNOWN_ERROR = 1000 ,
9091};
9192
93+ inline const std::unordered_map<ErrorCode, std::string> error_code_to_string_mapping = {{ErrorCode::OK, " OK" },
94+ {ErrorCode::UNSUPPORTED_PROTOCOL, " UNSUPPORTED_PROTOCOL" },
95+ {ErrorCode::FAILED_INIT, " FAILED_INIT" },
96+ {ErrorCode::URL_MALFORMAT, " URL_MALFORMAT" },
97+ {ErrorCode::NOT_BUILT_IN, " NOT_BUILT_IN" },
98+ {ErrorCode::COULDNT_RESOLVE_PROXY, " COULDNT_RESOLVE_PROXY" },
99+ {ErrorCode::COULDNT_RESOLVE_HOST, " COULDNT_RESOLVE_HOST" },
100+ {ErrorCode::COULDNT_CONNECT, " COULDNT_CONNECT" },
101+ {ErrorCode::WEIRD_SERVER_REPLY, " WEIRD_SERVER_REPLY" },
102+ {ErrorCode::REMOTE_ACCESS_DENIED, " REMOTE_ACCESS_DENIED" },
103+ {ErrorCode::HTTP2, " HTTP2" },
104+ {ErrorCode::PARTIAL_FILE, " PARTIAL_FILE" },
105+ {ErrorCode::QUOTE_ERROR, " QUOTE_ERROR" },
106+ {ErrorCode::HTTP_RETURNED_ERROR, " HTTP_RETURNED_ERROR" },
107+ {ErrorCode::WRITE_ERROR, " WRITE_ERROR" },
108+ {ErrorCode::UPLOAD_FAILED, " UPLOAD_FAILED" },
109+ {ErrorCode::READ_ERROR, " READ_ERROR" },
110+ {ErrorCode::OUT_OF_MEMORY, " OUT_OF_MEMORY" },
111+ {ErrorCode::OPERATION_TIMEDOUT, " OPERATION_TIMEDOUT" },
112+ {ErrorCode::RANGE_ERROR, " RANGE_ERROR" },
113+ {ErrorCode::HTTP_POST_ERROR, " HTTP_POST_ERROR" },
114+ {ErrorCode::SSL_CONNECT_ERROR, " SSL_CONNECT_ERROR" },
115+ {ErrorCode::BAD_DOWNLOAD_RESUME, " BAD_DOWNLOAD_RESUME" },
116+ {ErrorCode::FILE_COULDNT_READ_FILE, " FILE_COULDNT_READ_FILE" },
117+ {ErrorCode::FUNCTION_NOT_FOUND, " FUNCTION_NOT_FOUND" },
118+ {ErrorCode::ABORTED_BY_CALLBACK, " ABORTED_BY_CALLBACK" },
119+ {ErrorCode::BAD_FUNCTION_ARGUMENT, " BAD_FUNCTION_ARGUMENT" },
120+ {ErrorCode::INTERFACE_FAILED, " INTERFACE_FAILED" },
121+ {ErrorCode::TOO_MANY_REDIRECTS, " TOO_MANY_REDIRECTS" },
122+ {ErrorCode::UNKNOWN_OPTION, " UNKNOWN_OPTION" },
123+ {ErrorCode::SETOPT_OPTION_SYNTAX, " SETOPT_OPTION_SYNTAX" },
124+ {ErrorCode::GOT_NOTHING, " GOT_NOTHING" },
125+ {ErrorCode::SSL_ENGINE_NOTFOUND, " SSL_ENGINE_NOTFOUND" },
126+ {ErrorCode::SSL_ENGINE_SETFAILED, " SSL_ENGINE_SETFAILED" },
127+ {ErrorCode::SEND_ERROR, " SEND_ERROR" },
128+ {ErrorCode::RECV_ERROR, " RECV_ERROR" },
129+ {ErrorCode::SSL_CERTPROBLEM, " SSL_CERTPROBLEM" },
130+ {ErrorCode::SSL_CIPHER, " SSL_CIPHER" },
131+ {ErrorCode::PEER_FAILED_VERIFICATION, " PEER_FAILED_VERIFICATION" },
132+ {ErrorCode::BAD_CONTENT_ENCODING, " BAD_CONTENT_ENCODING" },
133+ {ErrorCode::FILESIZE_EXCEEDED, " FILESIZE_EXCEEDED" },
134+ {ErrorCode::USE_SSL_FAILED, " USE_SSL_FAILED" },
135+ {ErrorCode::SEND_FAIL_REWIND, " SEND_FAIL_REWIND" },
136+ {ErrorCode::SSL_ENGINE_INITFAILED, " SSL_ENGINE_INITFAILED" },
137+ {ErrorCode::LOGIN_DENIED, " LOGIN_DENIED" },
138+ {ErrorCode::SSL_CACERT_BADFILE, " SSL_CACERT_BADFILE" },
139+ {ErrorCode::SSL_SHUTDOWN_FAILED, " SSL_SHUTDOWN_FAILED" },
140+ {ErrorCode::AGAIN, " AGAIN" },
141+ {ErrorCode::SSL_CRL_BADFILE, " SSL_CRL_BADFILE" },
142+ {ErrorCode::SSL_ISSUER_ERROR, " SSL_ISSUER_ERROR" },
143+ {ErrorCode::CHUNK_FAILED, " CHUNK_FAILED" },
144+ {ErrorCode::NO_CONNECTION_AVAILABLE, " NO_CONNECTION_AVAILABLE" },
145+ {ErrorCode::SSL_PINNEDPUBKEYNOTMATCH, " SSL_PINNEDPUBKEYNOTMATCH" },
146+ {ErrorCode::SSL_INVALIDCERTSTATUS, " SSL_INVALIDCERTSTATUS" },
147+ {ErrorCode::HTTP2_STREAM, " HTTP2_STREAM" },
148+ {ErrorCode::RECURSIVE_API_CALL, " RECURSIVE_API_CALL" },
149+ {ErrorCode::AUTH_ERROR, " AUTH_ERROR" },
150+ {ErrorCode::HTTP3, " HTTP3" },
151+ {ErrorCode::QUIC_CONNECT_ERROR, " QUIC_CONNECT_ERROR" },
152+ {ErrorCode::PROXY, " PROXY" },
153+ {ErrorCode::SSL_CLIENTCERT, " SSL_CLIENTCERT" },
154+ {ErrorCode::UNRECOVERABLE_POLL, " UNRECOVERABLE_POLL" },
155+ {ErrorCode::TOO_LARGE, " TOO_LARGE" },
156+ {ErrorCode::UNKNOWN_ERROR, " UNKNOWN_ERROR" }};
157+
92158class Error {
93159 public:
94160 ErrorCode code = ErrorCode::OK;
@@ -108,4 +174,11 @@ class Error {
108174
109175} // namespace cpr
110176
177+ namespace std {
178+ inline std::string to_string (const cpr::ErrorCode& code) {
179+ return cpr::error_code_to_string_mapping.at (code);
180+ }
181+ } // namespace std
182+
183+
111184#endif
0 commit comments