33#include < unordered_map>
44
55namespace cpr {
6- static const std::unordered_map<std::int32_t , ErrorCode> curl_error_map = {
7- {CURLE_OK, ErrorCode::OK},
8- {CURLE_UNSUPPORTED_PROTOCOL, ErrorCode::UNSUPPORTED_PROTOCOL},
9- {CURLE_FAILED_INIT, ErrorCode::FAILED_INIT},
10- {CURLE_URL_MALFORMAT, ErrorCode::URL_MALFORMAT},
11- {CURLE_NOT_BUILT_IN, ErrorCode::NOT_BUILT_IN},
12- {CURLE_COULDNT_RESOLVE_PROXY, ErrorCode::COULDNT_RESOLVE_PROXY},
13- {CURLE_COULDNT_RESOLVE_HOST, ErrorCode::COULDNT_RESOLVE_HOST},
14- {CURLE_COULDNT_CONNECT, ErrorCode::COULDNT_CONNECT},
15-
16- // Name changed in curl >= 7.51.0.
6+ static const std::unordered_map<std::int32_t , ErrorCode> curl_error_map = {
7+ {CURLE_OK, ErrorCode::OK},
8+ {CURLE_UNSUPPORTED_PROTOCOL, ErrorCode::UNSUPPORTED_PROTOCOL},
9+ {CURLE_FAILED_INIT, ErrorCode::FAILED_INIT},
10+ {CURLE_URL_MALFORMAT, ErrorCode::URL_MALFORMAT},
11+ {CURLE_NOT_BUILT_IN, ErrorCode::NOT_BUILT_IN},
12+ {CURLE_COULDNT_RESOLVE_PROXY, ErrorCode::COULDNT_RESOLVE_PROXY},
13+ {CURLE_COULDNT_RESOLVE_HOST, ErrorCode::COULDNT_RESOLVE_HOST},
14+ {CURLE_COULDNT_CONNECT, ErrorCode::COULDNT_CONNECT},
15+
16+ // Name changed in curl >= 7.51.0.
1717#if LIBCURL_VERSION_NUM >= 0x073300
18- {CURLE_WEIRD_SERVER_REPLY, ErrorCode::WEIRD_SERVER_REPLY},
18+ {CURLE_WEIRD_SERVER_REPLY, ErrorCode::WEIRD_SERVER_REPLY},
1919#else
20- {CURLE_FTP_WEIRD_SERVER_REPLY, ErrorCode::WEIRD_SERVER_REPLY},
21- #endif
22-
23- {CURLE_REMOTE_ACCESS_DENIED, ErrorCode::REMOTE_ACCESS_DENIED},
24- {CURLE_HTTP2, ErrorCode::HTTP2},
25- {CURLE_QUOTE_ERROR, ErrorCode::QUOTE_ERROR},
26- {CURLE_HTTP_RETURNED_ERROR, ErrorCode::HTTP_RETURNED_ERROR},
27- {CURLE_WRITE_ERROR, ErrorCode::WRITE_ERROR},
28- {CURLE_UPLOAD_FAILED, ErrorCode::UPLOAD_FAILED},
29- {CURLE_READ_ERROR, ErrorCode::READ_ERROR},
30- {CURLE_OUT_OF_MEMORY, ErrorCode::OUT_OF_MEMORY},
31- {CURLE_OPERATION_TIMEDOUT, ErrorCode::OPERATION_TIMEDOUT},
32- {CURLE_RANGE_ERROR, ErrorCode::RANGE_ERROR},
33- {CURLE_HTTP_POST_ERROR, ErrorCode::HTTP_POST_ERROR},
34- {CURLE_SSL_CONNECT_ERROR, ErrorCode::SSL_CONNECT_ERROR},
35- {CURLE_BAD_DOWNLOAD_RESUME, ErrorCode::BAD_DOWNLOAD_RESUME},
36- {CURLE_FILE_COULDNT_READ_FILE, ErrorCode::FILE_COULDNT_READ_FILE},
37- {CURLE_FUNCTION_NOT_FOUND, ErrorCode::FUNCTION_NOT_FOUND},
38- {CURLE_ABORTED_BY_CALLBACK, ErrorCode::ABORTED_BY_CALLBACK},
39- {CURLE_BAD_FUNCTION_ARGUMENT, ErrorCode::BAD_FUNCTION_ARGUMENT},
40- {CURLE_INTERFACE_FAILED, ErrorCode::INTERFACE_FAILED},
41- {CURLE_TOO_MANY_REDIRECTS, ErrorCode::TOO_MANY_REDIRECTS},
42- {CURLE_UNKNOWN_OPTION, ErrorCode::UNKNOWN_OPTION},
43-
44- // Added in curl 7.78.0.
20+ {CURLE_FTP_WEIRD_SERVER_REPLY, ErrorCode::WEIRD_SERVER_REPLY},
21+ #endif
22+
23+ {CURLE_REMOTE_ACCESS_DENIED, ErrorCode::REMOTE_ACCESS_DENIED},
24+ {CURLE_HTTP2, ErrorCode::HTTP2},
25+ {CURLE_QUOTE_ERROR, ErrorCode::QUOTE_ERROR},
26+ {CURLE_HTTP_RETURNED_ERROR, ErrorCode::HTTP_RETURNED_ERROR},
27+ {CURLE_WRITE_ERROR, ErrorCode::WRITE_ERROR},
28+ {CURLE_UPLOAD_FAILED, ErrorCode::UPLOAD_FAILED},
29+ {CURLE_READ_ERROR, ErrorCode::READ_ERROR},
30+ {CURLE_OUT_OF_MEMORY, ErrorCode::OUT_OF_MEMORY},
31+ {CURLE_OPERATION_TIMEDOUT, ErrorCode::OPERATION_TIMEDOUT},
32+ {CURLE_RANGE_ERROR, ErrorCode::RANGE_ERROR},
33+ {CURLE_HTTP_POST_ERROR, ErrorCode::HTTP_POST_ERROR},
34+ {CURLE_SSL_CONNECT_ERROR, ErrorCode::SSL_CONNECT_ERROR},
35+ {CURLE_BAD_DOWNLOAD_RESUME, ErrorCode::BAD_DOWNLOAD_RESUME},
36+ {CURLE_FILE_COULDNT_READ_FILE, ErrorCode::FILE_COULDNT_READ_FILE},
37+ {CURLE_FUNCTION_NOT_FOUND, ErrorCode::FUNCTION_NOT_FOUND},
38+ {CURLE_ABORTED_BY_CALLBACK, ErrorCode::ABORTED_BY_CALLBACK},
39+ {CURLE_BAD_FUNCTION_ARGUMENT, ErrorCode::BAD_FUNCTION_ARGUMENT},
40+ {CURLE_INTERFACE_FAILED, ErrorCode::INTERFACE_FAILED},
41+ {CURLE_TOO_MANY_REDIRECTS, ErrorCode::TOO_MANY_REDIRECTS},
42+ {CURLE_UNKNOWN_OPTION, ErrorCode::UNKNOWN_OPTION},
43+
44+ // Added in curl 7.78.0.
4545#if LIBCURL_VERSION_NUM >= 0x074E00
46- {CURLE_SETOPT_OPTION_SYNTAX, ErrorCode::SETOPT_OPTION_SYNTAX},
47- #endif
48-
49- {CURLE_GOT_NOTHING, ErrorCode::GOT_NOTHING},
50- {CURLE_SSL_ENGINE_NOTFOUND, ErrorCode::SSL_ENGINE_NOTFOUND},
51- {CURLE_SSL_ENGINE_SETFAILED, ErrorCode::SSL_ENGINE_SETFAILED},
52- {CURLE_SEND_ERROR, ErrorCode::SEND_ERROR},
53- {CURLE_RECV_ERROR, ErrorCode::RECV_ERROR},
54- {CURLE_SSL_CERTPROBLEM, ErrorCode::SSL_CERTPROBLEM},
55- {CURLE_SSL_CIPHER, ErrorCode::SSL_CIPHER},
56- {CURLE_PEER_FAILED_VERIFICATION, ErrorCode::PEER_FAILED_VERIFICATION},
57- {CURLE_BAD_CONTENT_ENCODING, ErrorCode::BAD_CONTENT_ENCODING},
58- {CURLE_FILESIZE_EXCEEDED, ErrorCode::FILESIZE_EXCEEDED},
59- {CURLE_USE_SSL_FAILED, ErrorCode::USE_SSL_FAILED},
60- {CURLE_SEND_FAIL_REWIND, ErrorCode::SEND_FAIL_REWIND},
61- {CURLE_SSL_ENGINE_INITFAILED, ErrorCode::SSL_ENGINE_INITFAILED},
62-
63- // Added in curl 7.13.1.
46+ {CURLE_SETOPT_OPTION_SYNTAX, ErrorCode::SETOPT_OPTION_SYNTAX},
47+ #endif
48+
49+ {CURLE_GOT_NOTHING, ErrorCode::GOT_NOTHING},
50+ {CURLE_SSL_ENGINE_NOTFOUND, ErrorCode::SSL_ENGINE_NOTFOUND},
51+ {CURLE_SSL_ENGINE_SETFAILED, ErrorCode::SSL_ENGINE_SETFAILED},
52+ {CURLE_SEND_ERROR, ErrorCode::SEND_ERROR},
53+ {CURLE_RECV_ERROR, ErrorCode::RECV_ERROR},
54+ {CURLE_SSL_CERTPROBLEM, ErrorCode::SSL_CERTPROBLEM},
55+ {CURLE_SSL_CIPHER, ErrorCode::SSL_CIPHER},
56+ {CURLE_PEER_FAILED_VERIFICATION, ErrorCode::PEER_FAILED_VERIFICATION},
57+ {CURLE_BAD_CONTENT_ENCODING, ErrorCode::BAD_CONTENT_ENCODING},
58+ {CURLE_FILESIZE_EXCEEDED, ErrorCode::FILESIZE_EXCEEDED},
59+ {CURLE_USE_SSL_FAILED, ErrorCode::USE_SSL_FAILED},
60+ {CURLE_SEND_FAIL_REWIND, ErrorCode::SEND_FAIL_REWIND},
61+ {CURLE_SSL_ENGINE_INITFAILED, ErrorCode::SSL_ENGINE_INITFAILED},
62+
63+ // Added in curl 7.13.1.
6464#if LIBCURL_VERSION_NUM >= 0x070D01
65- {CURLE_LOGIN_DENIED, ErrorCode::LOGIN_DENIED},
65+ {CURLE_LOGIN_DENIED, ErrorCode::LOGIN_DENIED},
6666#endif
6767
68- // Added in curl 7.16.0.
68+ // Added in curl 7.16.0.
6969#if LIBCURL_VERSION_NUM >= 0x071000
70- {CURLE_SSL_CACERT_BADFILE, ErrorCode::SSL_CACERT_BADFILE},
70+ {CURLE_SSL_CACERT_BADFILE, ErrorCode::SSL_CACERT_BADFILE},
7171#endif
7272
73- // Added in curl 7.16.1.
73+ // Added in curl 7.16.1.
7474#if LIBCURL_VERSION_NUM >= 0x071001
75- {CURLE_SSL_SHUTDOWN_FAILED, ErrorCode::SSL_SHUTDOWN_FAILED},
75+ {CURLE_SSL_SHUTDOWN_FAILED, ErrorCode::SSL_SHUTDOWN_FAILED},
7676#endif
7777
78- // Added in curl 7.18.2.
78+ // Added in curl 7.18.2.
7979#if LIBCURL_VERSION_NUM >= 0x071202
80- {CURLE_AGAIN, ErrorCode::AGAIN},
80+ {CURLE_AGAIN, ErrorCode::AGAIN},
8181#endif
8282
83- // Added in curl 7.19.0.
83+ // Added in curl 7.19.0.
8484#if LIBCURL_VERSION_NUM >= 0x071300
85- {CURLE_SSL_CRL_BADFILE, ErrorCode::SSL_CRL_BADFILE},
86- {CURLE_SSL_ISSUER_ERROR, ErrorCode::SSL_ISSUER_ERROR},
85+ {CURLE_SSL_CRL_BADFILE, ErrorCode::SSL_CRL_BADFILE},
86+ {CURLE_SSL_ISSUER_ERROR, ErrorCode::SSL_ISSUER_ERROR},
8787#endif
8888
89- // Added in curl 7.21.0.
89+ // Added in curl 7.21.0.
9090#if LIBCURL_VERSION_NUM >= 0x071500
91- {CURLE_CHUNK_FAILED, ErrorCode::CHUNK_FAILED},
91+ {CURLE_CHUNK_FAILED, ErrorCode::CHUNK_FAILED},
9292#endif
9393
94- // Added in curl 7.30.0.
94+ // Added in curl 7.30.0.
9595#if LIBCURL_VERSION_NUM >= 0x071E00
96- {CURLE_NO_CONNECTION_AVAILABLE, ErrorCode::NO_CONNECTION_AVAILABLE},
96+ {CURLE_NO_CONNECTION_AVAILABLE, ErrorCode::NO_CONNECTION_AVAILABLE},
9797#endif
9898
99- // Added in curl 7.39.0.
99+ // Added in curl 7.39.0.
100100#if LIBCURL_VERSION_NUM >= 0x072700
101- {CURLE_SSL_PINNEDPUBKEYNOTMATCH, ErrorCode::SSL_PINNEDPUBKEYNOTMATCH},
101+ {CURLE_SSL_PINNEDPUBKEYNOTMATCH, ErrorCode::SSL_PINNEDPUBKEYNOTMATCH},
102102#endif
103103
104- // Added in curl 7.41.0.
104+ // Added in curl 7.41.0.
105105#if LIBCURL_VERSION_NUM >= 0x072900
106- {CURLE_SSL_INVALIDCERTSTATUS, ErrorCode::SSL_INVALIDCERTSTATUS},
106+ {CURLE_SSL_INVALIDCERTSTATUS, ErrorCode::SSL_INVALIDCERTSTATUS},
107107#endif
108108
109- // Added in curl 7.49.0.
109+ // Added in curl 7.49.0.
110110#if LIBCURL_VERSION_NUM >= 0x073100
111- {CURLE_HTTP2_STREAM, ErrorCode::HTTP2_STREAM},
111+ {CURLE_HTTP2_STREAM, ErrorCode::HTTP2_STREAM},
112112#endif
113113
114- {CURLE_PARTIAL_FILE, ErrorCode::PARTIAL_FILE},
114+ {CURLE_PARTIAL_FILE, ErrorCode::PARTIAL_FILE},
115115
116- // Added in curl 7.59.0.
116+ // Added in curl 7.59.0.
117117#if LIBCURL_VERSION_NUM >= 0x073B00
118- {CURLE_RECURSIVE_API_CALL, ErrorCode::RECURSIVE_API_CALL},
118+ {CURLE_RECURSIVE_API_CALL, ErrorCode::RECURSIVE_API_CALL},
119119#endif
120120
121- // Added in curl 7.66.0.
121+ // Added in curl 7.66.0.
122122#if LIBCURL_VERSION_NUM >= 0x074200
123- {CURLE_AUTH_ERROR, ErrorCode::AUTH_ERROR},
123+ {CURLE_AUTH_ERROR, ErrorCode::AUTH_ERROR},
124124#endif
125125
126- // Added in curl 7.68.0.
126+ // Added in curl 7.68.0.
127127#if LIBCURL_VERSION_NUM >= 0x074400
128- {CURLE_HTTP3, ErrorCode::HTTP3},
128+ {CURLE_HTTP3, ErrorCode::HTTP3},
129129#endif
130130
131- // Added in curl 7.69.0.
131+ // Added in curl 7.69.0.
132132#if LIBCURL_VERSION_NUM >= 0x074500
133- {CURLE_QUIC_CONNECT_ERROR, ErrorCode::QUIC_CONNECT_ERROR},
133+ {CURLE_QUIC_CONNECT_ERROR, ErrorCode::QUIC_CONNECT_ERROR},
134134#endif
135135
136- // Added in curl 7.73.0.
136+ // Added in curl 7.73.0.
137137#if LIBCURL_VERSION_NUM >= 0x074900
138- {CURLE_PROXY, ErrorCode::PROXY},
138+ {CURLE_PROXY, ErrorCode::PROXY},
139139#endif
140140
141- // Added in curl 7.77.0.
141+ // Added in curl 7.77.0.
142142#if LIBCURL_VERSION_NUM >= 0x074D00
143- {CURLE_SSL_CLIENTCERT, ErrorCode::SSL_CLIENTCERT},
143+ {CURLE_SSL_CLIENTCERT, ErrorCode::SSL_CLIENTCERT},
144144#endif
145145
146- // Added in curl 7.84.0.
146+ // Added in curl 7.84.0.
147147#if LIBCURL_VERSION_NUM >= 0x075400
148- {CURLE_UNRECOVERABLE_POLL, ErrorCode::UNRECOVERABLE_POLL},
148+ {CURLE_UNRECOVERABLE_POLL, ErrorCode::UNRECOVERABLE_POLL},
149149#endif
150150
151- // Added in curl 7.6.0.
151+ // Added in curl 7.6.0.
152152#if LIBCURL_VERSION_NUM >= 0x080600
153- {CURLE_TOO_LARGE, ErrorCode::TOO_LARGE},
153+ {CURLE_TOO_LARGE, ErrorCode::TOO_LARGE},
154154#endif
155- };
155+ };
156156
157- ErrorCode Error::getErrorCodeForCurlError (std::int32_t curl_code) {
158- auto it = curl_error_map.find (curl_code);
159- if (it == curl_error_map.end ()) {
160- // Default return value when the CURL error code is not recognized
161- return ErrorCode::UNKNOWN_ERROR;
162- }
163- return it->second ;
157+ ErrorCode Error::getErrorCodeForCurlError (std::int32_t curl_code) {
158+ auto it = curl_error_map.find (curl_code);
159+ if (it == curl_error_map.end ()) {
160+ // Default return value when the CURL error code is not recognized
161+ return ErrorCode::UNKNOWN_ERROR;
164162 }
163+ return it->second ;
164+ }
165165} // namespace cpr
0 commit comments