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