docker_registry/
errors.rs1#[non_exhaustive]
4#[derive(thiserror::Error, Debug)]
5pub enum Error {
6 #[error("Api Error: {0}")]
7 Api(#[from] crate::v2::ApiErrors),
8 #[error("base64 decode error")]
9 Base64Decode(#[from] base64::DecodeError),
10 #[error("header parse error")]
11 HeaderParse(#[from] reqwest::header::ToStrError),
12 #[error("json error")]
13 Json(#[from] serde_json::Error),
14 #[error("http transport error: {0}")]
15 Reqwest(#[from] reqwest::Error),
16 #[error("URI parse error")]
17 Uri(#[from] url::ParseError),
18 #[error("input is not UTF-8")]
19 Ut8Parse(#[from] std::string::FromUtf8Error),
20 #[error("strum error")]
21 StrumParse(#[from] strum::ParseError),
22 #[error("authentication information missing for index {0}")]
23 AuthInfoMissing(String),
24 #[error("unknown media type {0:?}")]
25 UnknownMimeType(mime::Mime),
26 #[error("unknown media type {0:?}")]
27 UnsupportedMediaType(crate::mediatypes::MediaTypes),
28 #[error("mime parse error")]
29 MimeParse(#[from] mime::FromStrError),
30 #[error("missing authentication header {0}")]
31 MissingAuthHeader(&'static str),
32 #[error("unexpected HTTP status {0}")]
33 UnexpectedHttpStatus(reqwest::StatusCode),
34 #[error("invalid auth token '{0}'")]
35 InvalidAuthToken(String),
36 #[error("API V2 not supported")]
37 V2NotSupported,
38 #[error("obtained token is invalid")]
39 LoginReturnedBadToken,
40 #[error("www-authenticate header parse error")]
41 Www(#[from] crate::v2::WwwHeaderParseError),
42 #[error("request failed with status {status}")]
43 Client { status: reqwest::StatusCode },
44 #[error("request failed with status {status}")]
45 Server { status: reqwest::StatusCode },
46 #[error("content digest error")]
47 ContentDigestParse(#[from] crate::v2::ContentDigestError),
48 #[error("no header Content-Type given and no workaround to apply")]
49 MediaTypeSniff,
50 #[error("manifest error")]
51 Manifest(#[from] crate::v2::manifest::ManifestError),
52 #[error("reference is invalid")]
53 ReferenceParse(#[from] crate::reference::ReferenceParseError),
54 #[error("requested operation requires that credentials are available")]
55 NoCredentials,
56 #[error("did not receive auth token")]
57 NoTokenReceived,
58}
59
60pub type Result<T> = std::result::Result<T, Error>;
61
62#[cfg(test)]
63mod tests {
64 use super::*;
65 #[test]
66 fn test_error_bounds() {
67 fn check_bounds<T: Send + Sync + 'static>() {}
68 check_bounds::<Error>();
69 }
70}