Skip to main content

hamsando/
errors.rs

1use std::net::AddrParseError;
2
3use reqwest::StatusCode;
4use thiserror::Error;
5
6#[derive(Error, Debug)]
7#[error("Porkbun API error: {status} - {message}")]
8pub struct ApiError {
9    status: StatusCode,
10    message: String,
11}
12
13impl ApiError {
14    /// Creates a new `ApiError` from a status code and message.
15    pub(crate) fn new(status: StatusCode, message: Option<&str>) -> Self {
16        let message = message.unwrap_or("unable to get error message");
17
18        Self {
19            status,
20            message: message.to_owned(),
21        }
22    }
23}
24
25#[derive(Error, Debug)]
26pub enum ClientError {
27    #[error(transparent)]
28    Porkbun(#[from] ApiError),
29    #[error(transparent)]
30    Reqwest(#[from] reqwest::Error),
31    #[error(transparent)]
32    UrlParse(#[from] url::ParseError),
33}
34
35#[derive(Error, Debug)]
36pub enum ClientBuilderError {
37    #[error(transparent)]
38    UrlParse(#[from] url::ParseError),
39}
40
41#[derive(Error, Debug)]
42pub enum ContentCreationError {
43    #[error(transparent)]
44    AddrParse(#[from] AddrParseError),
45}