use reqwest::StatusCode;
use thiserror::Error;
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Debug, Error)]
pub enum Error {
#[error("invalid configuration: {message}")]
Config {
message: String,
},
#[error("invalid request: {message}")]
InvalidRequest {
message: String,
},
#[error("transport error: {0}")]
Transport(#[source] reqwest::Error),
#[error("failed to serialize request body: {0}")]
Serialize(#[source] serde_json::Error),
#[error("qstash api error ({status}): {message}")]
Api {
status: StatusCode,
message: String,
body: Option<String>,
},
#[error("failed to decode response body with status {status}: {source}")]
Decode {
status: StatusCode,
body: String,
#[source]
source: serde_json::Error,
},
#[error("jwt verification failed: {0}")]
Jwt(#[from] jsonwebtoken::errors::Error),
#[error("signature verification failed: {message}")]
Signature {
message: String,
},
}