docker_registry_client/docker/
error.rs1use url::Url;
2
3use crate::docker::token_cache;
4
5#[derive(Debug)]
6pub enum Error {
7 GetManifest(reqwest::Error),
8 InvalidManifestUrl(url::ParseError),
9 ExtractManifestBody(reqwest::Error),
10 FailedManifestRequest(reqwest::StatusCode, String),
11 DeserializeManifestBody(serde_json::Error, String),
12 ParseManifestAcceptHeader(reqwest::header::InvalidHeaderValue),
13 ManifestNotFound(Url),
14 MissingDockerContentDigestHeader,
15 ParseDockerContentDigestHeader(reqwest::header::ToStrError),
16
17 InvalidTokenUrl(url::ParseError),
18 GetToken(reqwest::Error),
19 ExtractTokenBody(reqwest::Error),
20 DeserializeToken(serde_json::Error, String),
21 ParseAuthorizationHeader(reqwest::header::InvalidHeaderValue),
22 InvalidImageUrl(crate::image::FromUrlError),
23 FetchToken(token_cache::FetchError),
24 StoreToken(token_cache::StoreError),
25}
26
27impl std::fmt::Display for Error {
28 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
29 match self {
30 Self::GetManifest(e) => write!(f, "Failed to get manifest: {e}"),
31 Self::InvalidManifestUrl(e) => write!(f, "Invalid manifest URL: {e}"),
32 Self::ExtractManifestBody(e) => write!(f, "Failed to extract manifest body: {e}"),
33 Self::FailedManifestRequest(e, s) => {
34 write!(f, "Failed manifest request: status: {e}, body: {s}")
35 }
36 Self::DeserializeManifestBody(e, s) => {
37 write!(f, "Failed to deserialize manifest body: {e}, body: {s}")
38 }
39 Self::ParseManifestAcceptHeader(e) => {
40 write!(f, "Failed to parse manifest accept header: {e}")
41 }
42 Self::ManifestNotFound(u) => write!(f, "Manifest at url {u} was not found"),
43 Self::MissingDockerContentDigestHeader => {
44 write!(f, "Missing Docker content digest header")
45 }
46 Self::ParseDockerContentDigestHeader(e) => {
47 write!(f, "Failed to parse Docker content digest header: {e}")
48 }
49
50 Self::InvalidTokenUrl(e) => write!(f, "Invalid token URL: {e}"),
51 Self::GetToken(e) => write!(f, "Failed to get token: {e}"),
52 Self::ExtractTokenBody(e) => write!(f, "Failed to extract token body: {e}"),
53 Self::DeserializeToken(e, s) => {
54 write!(f, "Failed to deserialize token: {e}, body: {s}")
55 }
56 Self::ParseAuthorizationHeader(e) => {
57 write!(f, "Failed to parse authorization header: {e}")
58 }
59 Self::InvalidImageUrl(e) => {
60 write!(f, "Failed to parse image from url: {e}")
61 }
62 Self::FetchToken(e) => write!(f, "Failed to fetch token from cache: {e}"),
63 Self::StoreToken(e) => write!(f, "Failed to store token in cache: {e}"),
64 }
65 }
66}
67
68impl std::error::Error for Error {}