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}