1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
use serde::{ Serialize, Deserialize };
include!("split/structs/balance_transaction/response.rs");
include!("split/structs/balance_transaction/response_list.rs");
#[doc(hidden)]
#[derive(PartialEq)]
pub enum Types {
RETRIEVE(String),
LIST(String)
}
#[doc(hidden)]
const BALANCE_TRANSACTION_URL: &str = "https://api.stripe.com/v1/balance_transactions";
#[doc(hidden)]
impl Types {
pub fn create_send_request(&self, client: &reqwest::Client, secret: &str)-> reqwest::RequestBuilder {
let mut result = client
.post(self._get_url())
.basic_auth(secret, None::<&str>)
.header("Content-Type", "application/x-www-form-urlencoded");
if let Some(r) = self._get_body() {
result = result.body(r);
}
result
}
pub fn create_get_request(&self, client: &reqwest::Client, secret: &str)-> reqwest::RequestBuilder {
let mut result = client
.get(self._get_url())
.basic_auth(secret, None::<&str>)
.header("Content-Type", "application/x-www-form-urlencoded");
if let Some(r) = self._get_body() {
result = result.body(r);
}
result
}
fn _get_url(&self) -> String {
match self {
Self::RETRIEVE(id) => format!("{}/{}", BALANCE_TRANSACTION_URL, id),
Self::LIST(_) => format!("{}", BALANCE_TRANSACTION_URL)
}
}
fn _get_body(&self) -> Option<String> {
let body = match self {
Self::LIST(body) => body,
_ => ""
};
if body.is_empty() {
None
} else {
Some(body.to_string())
}
}
}
#[doc(hidden)]
pub struct Info<'a> {
pub r#type: Types,
pub secret_key: String,
pub reqwest_client: &'a reqwest::Client
}
impl Info<'_> {
pub async fn get(&self) -> Result<Response, (String, Option<crate::error::Info>)> {
match self.r#type {
Types::RETRIEVE(_) => (),
Types::LIST(_) => {
if log::log_enabled!(log::Level::Error) {
log::error!("The selected type is not compatible with `get()`. Please use the `get_list()` function");
}
return Err(("This function is not compatible with the selected type".to_string(), None));
}
};
crate::helper::make_reqwest::<Response>(self.r#type.create_get_request(self.reqwest_client, &self.secret_key)).await
}
pub async fn get_list(&self) -> Result<ResponseList, (String, Option<crate::error::Info>)> {
match self.r#type {
Types::LIST(_) => (),
Types::RETRIEVE(_) => {
if log::log_enabled!(log::Level::Error) {
log::error!("The selected type is not compatible with `get_list()`. Please use the `get()` function");
}
return Err(("This function is not compatible with the selected type".to_string(), None));
}
};
crate::helper::make_reqwest::<ResponseList>(self.r#type.create_get_request(self.reqwest_client, &self.secret_key)).await
}
}