docker_registry/
errors.rs

1//! Defines root error type
2
3#[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}