1use serde::{Deserialize, Serialize};
2use thiserror::Error;
3
4pub type ApiResult<T> = Result<T, PixError>;
5
6#[derive(Debug, Serialize, Deserialize)]
7struct GenericErrorMessage {
8 nome: String,
9 mensagem: String,
10 errors: Option<Vec<Erros>>,
11}
12
13#[derive(Debug, Serialize, Deserialize)]
14struct Erros {
15 chave: String,
16 caminho: String,
17 mensagem: String,
18}
19
20#[derive(Debug, Error)]
21pub enum PixError {
22 #[error("Invalid credentials")]
24 InvalidCredentials,
25
26 #[error("Access token is expired. Renew it")]
28 ExpiredToken(String),
29
30 #[error("There is something wrong with the payload this library sent.")]
31 PayloadError,
32
33 #[error("`{0}`")]
34 Other(String),
35
36 #[error(transparent)]
37 NonCompliantResponse(#[from] serde_json::Error),
38
39 #[error(transparent)]
40 NetworkError(#[from] reqwest::Error),
41}