apollo_http_client/
error.rs1use apollo_errors::Error;
2use apollo_errors::miette;
3use tower::BoxError;
4
5#[non_exhaustive]
7#[derive(Debug, Error, miette::Diagnostic)]
8pub enum HttpClientError {
9 #[error("failed to build HTTP client")]
11 #[diagnostic(code(http_client::build_failed))]
12 Build {
13 #[from]
15 source: rustls::Error,
16 },
17
18 #[error("failed to parse `tls.certificate_authorities` as PEM")]
20 #[diagnostic(code(http_client::tls_certificate_authorities_invalid))]
21 TlsCertificateAuthoritiesInvalid {
22 #[source]
24 source: std::io::Error,
25 },
26
27 #[error("`tls.certificate_authorities` contained no certificates")]
29 #[diagnostic(code(http_client::tls_certificate_authorities_empty))]
30 TlsCertificateAuthoritiesEmpty,
31
32 #[error(
34 "TLS has no trust anchors: set `tls.certificate_authorities`, enable \
35 `tls.use_native_certificate_store`, or set `tls.danger_accept_invalid_certs` \
36 for development only"
37 )]
38 #[diagnostic(code(http_client::tls_no_trust_anchors))]
39 TlsNoTrustAnchors,
40
41 #[error("failed to parse `tls.client_authentication.certificate_chain` as PEM")]
43 #[diagnostic(code(http_client::tls_client_certificate_chain_invalid))]
44 TlsClientCertificateChainInvalid {
45 #[source]
47 source: std::io::Error,
48 },
49
50 #[error("`tls.client_authentication.certificate_chain` contained no certificates")]
52 #[diagnostic(code(http_client::tls_client_certificate_chain_empty))]
53 TlsClientCertificateChainEmpty,
54
55 #[error("failed to parse `tls.client_authentication.key` as PEM")]
57 #[diagnostic(code(http_client::tls_client_key_invalid))]
58 TlsClientKeyInvalid {
59 #[source]
61 source: std::io::Error,
62 },
63
64 #[error(
66 "`tls.client_authentication.key` contained no PKCS#1, PKCS#8, or SEC1 private key block"
67 )]
68 #[diagnostic(code(http_client::tls_client_key_missing))]
69 TlsClientKeyMissing,
70
71 #[error(
73 "`tls.client_authentication.key` is encrypted; only unencrypted private keys are supported"
74 )]
75 #[diagnostic(code(http_client::tls_client_key_encrypted))]
76 TlsClientKeyEncrypted,
77
78 #[error(
85 "failed to configure TLS client authentication from `tls.client_authentication` \
86 — verify `certificate_chain` and `key` are from the same key pair"
87 )]
88 #[diagnostic(code(http_client::tls_client_auth))]
89 TlsClientAuth {
90 #[source]
92 source: rustls::Error,
93 },
94
95 #[error("invalid request URI")]
97 #[diagnostic(code(http_client::invalid_uri))]
98 InvalidUri {
99 #[source]
101 source: http::Error,
102 },
103
104 #[error("connection timed out")]
106 #[diagnostic(code(http_client::connection_timeout))]
107 ConnectionTimeout,
108
109 #[error("transport error")]
111 #[diagnostic(code(http_client::transport_error))]
112 Transport {
113 #[source]
115 source: BoxError,
116 },
117
118 #[error("HTTP handshake failed")]
120 #[diagnostic(code(http_client::handshake_failed))]
121 Handshake {
122 #[source]
124 source: hyper::Error,
125 },
126
127 #[error("HTTP request failed")]
129 #[diagnostic(code(http_client::request_failed))]
130 Request {
131 #[source]
133 source: hyper::Error,
134 },
135
136 #[error("proxy CONNECT rejected with status {status}")]
138 #[diagnostic(code(http_client::proxy_connect_rejected))]
139 ProxyTunnel {
140 status: http::StatusCode,
142 },
143
144 #[error("invalid HTTP client configuration")]
152 #[diagnostic(code(http_client::invalid_config))]
153 InvalidConfig {
154 #[source]
156 source: apollo_configuration::ValidationErrors,
157 },
158
159 #[cfg(unix)]
161 #[error("invalid Unix socket path in URI authority")]
162 #[diagnostic(code(http_client::invalid_unix_socket_path))]
163 InvalidUnixSocketPath {
164 #[source]
166 source: hex::FromHexError,
167 },
168
169 #[cfg(unix)]
173 #[error("Unix socket path is not valid UTF-8")]
174 #[diagnostic(code(http_client::non_utf8_unix_socket_path))]
175 NonUtf8UnixSocketPath {
176 #[source]
178 source: std::string::FromUtf8Error,
179 },
180
181 #[error("unsupported URI scheme: {scheme:?}")]
183 #[diagnostic(code(http_client::unsupported_scheme))]
184 UnsupportedScheme {
185 scheme: String,
187 },
188}