summaryrefslogtreecommitdiffstats
path: root/third_party/rust/viaduct/src/error.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
commit36d22d82aa202bb199967e9512281e9a53db42c9 (patch)
tree105e8c98ddea1c1e4784a60a5a6410fa416be2de /third_party/rust/viaduct/src/error.rs
parentInitial commit. (diff)
downloadfirefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz
firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/rust/viaduct/src/error.rs')
-rw-r--r--third_party/rust/viaduct/src/error.rs48
1 files changed, 48 insertions, 0 deletions
diff --git a/third_party/rust/viaduct/src/error.rs b/third_party/rust/viaduct/src/error.rs
new file mode 100644
index 0000000000..a66c3e38fe
--- /dev/null
+++ b/third_party/rust/viaduct/src/error.rs
@@ -0,0 +1,48 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#[derive(Debug, thiserror::Error)]
+pub enum Error {
+ #[error("[no-sentry] Illegal characters in request header '{0}'")]
+ RequestHeaderError(crate::HeaderName),
+
+ #[error("[no-sentry] Backend error: {0}")]
+ BackendError(String),
+
+ #[error("[no-sentry] Network error: {0}")]
+ NetworkError(String),
+
+ #[error("The rust-components network backend must be initialized before use!")]
+ BackendNotInitialized,
+
+ #[error("Backend already initialized.")]
+ SetBackendError,
+
+ /// Note: we return this if the server returns a bad URL with
+ /// its response. This *probably* should never happen, but who knows.
+ #[error("[no-sentry] URL Parse Error: {0}")]
+ UrlError(#[source] url::ParseError),
+
+ #[error("[no-sentry] Validation error: URL does not use TLS protocol.")]
+ NonTlsUrl,
+}
+
+impl From<url::ParseError> for Error {
+ fn from(u: url::ParseError) -> Self {
+ Error::UrlError(u)
+ }
+}
+
+/// This error is returned as the `Err` result from
+/// [`Response::require_success`].
+///
+/// Note that it's not a variant on `Error` to distinguish between errors
+/// caused by the network, and errors returned from the server.
+#[derive(thiserror::Error, Debug, Clone)]
+#[error("Error: {method} {url} returned {status}")]
+pub struct UnexpectedStatus {
+ pub status: u16,
+ pub method: crate::Method,
+ pub url: url::Url,
+}