reinfer_client/
error.rs

1use std::path::PathBuf;
2
3use reqwest::StatusCode;
4
5pub type Result<T> = std::result::Result<T, Error>;
6
7#[derive(Debug, thiserror::Error)]
8pub enum Error {
9    #[error("API request failed with {}: {}", status_code, message)]
10    Api {
11        status_code: StatusCode,
12        message: String,
13    },
14
15    #[error("Invalid endpoint: '{}'", endpoint)]
16    BadEndpoint { endpoint: url::Url },
17
18    #[error("Bad token: {}", token)]
19    BadToken { token: String },
20
21    #[error("File does not exist : {}", path.to_string_lossy())]
22    FileDoesNotExist { path: PathBuf },
23
24    #[error("Expected <owner>/<name> or a source id, got: {}", identifier)]
25    BadSourceIdentifier { identifier: String },
26
27    #[error("Expected <owner>/<name> or a dataset id, got: {}", identifier)]
28    BadDatasetIdentifier { identifier: String },
29
30    #[error("Expected <owner>/<name>: {}", identifier)]
31    BadIntegrationIdentifier { identifier: String },
32
33    #[error("Expected <owner>/<dataset>/<stream>: {}", identifier)]
34    BadStreamName { identifier: String },
35
36    #[error("Expected u64: {}", version)]
37    BadStreamModelVersion { version: String },
38
39    #[error(
40        "Expected a user id (usernames and emails are not supported), got: {}",
41        identifier
42    )]
43    BadUserIdentifier { identifier: String },
44
45    #[error("Expected a valid project name, got: {}", identifier)]
46    BadProjectIdentifier { identifier: String },
47
48    #[error("Unknown project permission: {}", permission)]
49    BadProjectPermission { permission: String },
50
51    #[error("Unknown global permission: {}", permission)]
52    BadGlobalPermission { permission: String },
53
54    #[error("Expected <owner>/<name> or a bucket id, got: {}", identifier)]
55    BadBucketIdentifier { identifier: String },
56
57    #[error("Expected <owner>/<name>, got: {}", name)]
58    BadBucketName { name: String },
59
60    #[error("Expected a valid bucket type, got: {}", bucket_type)]
61    BadBucketType { bucket_type: String },
62
63    #[error("Expected a valid quota kind, got: {}", tenant_quota_kind)]
64    BadTenantQuotaKind { tenant_quota_kind: String },
65
66    #[error("Could not parse JSON response.")]
67    BadJsonResponse(#[source] reqwest::Error),
68
69    #[error(
70        "Status code {} inconsistent with response payload: {}",
71        status_code,
72        message
73    )]
74    BadProtocol {
75        status_code: StatusCode,
76        message: String,
77    },
78
79    #[error("Failed to initialise the HTTP client")]
80    BuildHttpClient(#[source] reqwest::Error),
81
82    #[error("HTTP request error: {}", message)]
83    ReqwestError {
84        message: String,
85        source: reqwest::Error,
86    },
87
88    #[error("An unknown error has occurred: {}", message)]
89    Unknown {
90        message: String,
91        source: Box<dyn std::error::Error + Send + Sync + 'static>,
92    },
93}