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 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}