yapay_sdk_rust/
errors.rs

1use serde::Deserialize;
2use thiserror::Error;
3
4#[derive(Error, Debug)]
5pub enum SDKError {
6    #[error("{0}")]
7    CredentialsError(String),
8
9    #[error(transparent)]
10    NetworkError(#[from] reqwest::Error),
11
12    #[error(transparent)]
13    InvalidError(#[from] InvalidError),
14
15    #[error("{0:?}")]
16    PayloadError(ApiError),
17
18    #[error("Something wrong happened.")]
19    GenericError,
20}
21
22#[derive(Error, Clone, Copy, Debug)]
23pub enum CreditCardError {
24    #[error("Card has expired.")]
25    Expired,
26}
27
28#[derive(Error, Debug)]
29pub enum InvalidError {
30    #[error("Card has expired.")]
31    CreditCardExpired,
32
33    #[error("Item validation error: {0}")]
34    ItemError(String),
35
36    #[error(transparent)]
37    URLError(#[from] reqwest::Error),
38
39    #[error(transparent)]
40    ValidatorLibError(#[from] validator::ValidationErrors),
41}
42
43#[derive(Debug, Deserialize)]
44pub struct ApiError {
45    pub message: String,
46    pub status: i32,
47    pub error: String,
48    pub cause: Option<Vec<ErrorCause>>,
49}
50
51#[derive(Debug, Deserialize)]
52pub struct ErrorCause {
53    pub description: String,
54    pub code: String,
55}