use crate::runtime::RuntimeError;
use thiserror::Error as ThisError;
#[derive(Debug, ThisError)]
pub enum IcHostError {
#[error("failed to run IC Dashboard query: {0}")]
Runtime(#[from] RuntimeError),
#[error("invalid {field}: {reason}")]
InvalidPrincipal {
field: &'static str,
reason: String,
},
#[error("invalid {field}: {reason}")]
InvalidRequest {
field: &'static str,
reason: String,
},
#[error("invalid IC Dashboard endpoint {endpoint}: {reason}")]
InvalidEndpoint {
endpoint: String,
reason: String,
},
#[error("failed to build IC Dashboard HTTP client: {reason}")]
HttpClientBuild {
reason: String,
},
#[error("IC Dashboard request to {url} failed: {reason}")]
HttpRequest {
url: String,
reason: String,
},
#[error("IC Dashboard request to {url} returned HTTP status {status}")]
HttpStatus {
url: String,
status: u16,
},
#[error("failed to decode IC Dashboard response from {url}: {reason}")]
JsonDecode {
url: String,
reason: String,
},
#[error("invalid IC Dashboard source data: {reason}")]
InvalidSourceData {
reason: String,
},
}