use serde::Deserialize;
#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error("HTTP request failed or response JSON parsing errors")]
Http(#[from] reqwest::Error),
#[error("invalid URL")]
Url(#[from] url::ParseError),
#[error("invalid api key format. could not be inserted into a header")]
BadApiKey(#[from] reqwest::header::InvalidHeaderValue),
#[error("base url is invalid")]
InvalidBaseUrl(String),
#[error(transparent)] APIError(#[from] PdnsAPIError),
}
#[derive(Debug, Deserialize, thiserror::Error)]
#[error("{error}: {errors:?}")] pub struct PdnsAPIError {
pub error: String,
#[serde(default)]
pub errors: Vec<String>,
}