Skip to main content

efi_bank/
carnet.rs

1use reqwest::Method;
2
3use crate::client::Client;
4use crate::error::Error;
5use crate::types::{
6    CarnetCreateRequest, CarnetHistoryRequest, CarnetMetadataRequest, CarnetParcelRequest,
7    CarnetParcelsRequest, CarnetResponse,
8};
9
10impl Client {
11    pub async fn carnet_create(
12        &self,
13        payload: &CarnetCreateRequest,
14    ) -> Result<CarnetResponse, Error> {
15        self.send_authenticated_billing(Method::POST, "/v1/carnet", Some(payload))
16            .await
17    }
18
19    pub async fn carnet_get(&self, carnet_id: i64) -> Result<CarnetResponse, Error> {
20        let path = format!("/v1/carnet/{carnet_id}");
21        self.send_authenticated_billing::<serde_json::Value, CarnetResponse>(
22            Method::GET,
23            &path,
24            None,
25        )
26        .await
27    }
28
29    pub async fn carnet_list(
30        &self,
31        begin_date: &str,
32        end_date: &str,
33    ) -> Result<CarnetResponse, Error> {
34        let path =
35            format!("/v1/charges?begin_date={begin_date}&end_date={end_date}&charge_type=carnet");
36        self.send_authenticated_billing::<serde_json::Value, CarnetResponse>(
37            Method::GET,
38            &path,
39            None,
40        )
41        .await
42    }
43
44    pub async fn carnet_update_metadata(
45        &self,
46        carnet_id: i64,
47        payload: &CarnetMetadataRequest,
48    ) -> Result<CarnetResponse, Error> {
49        let path = format!("/v1/carnet/{carnet_id}/metadata");
50        self.send_authenticated_billing(Method::PUT, &path, Some(payload))
51            .await
52    }
53
54    pub async fn carnet_update_parcel(
55        &self,
56        carnet_id: i64,
57        parcel: i32,
58        payload: &CarnetParcelRequest,
59    ) -> Result<CarnetResponse, Error> {
60        let path = format!("/v1/carnet/{carnet_id}/parcel/{parcel}");
61        self.send_authenticated_billing(Method::PUT, &path, Some(payload))
62            .await
63    }
64
65    pub async fn carnet_update_parcels(
66        &self,
67        carnet_id: i64,
68        payload: &CarnetParcelsRequest,
69    ) -> Result<CarnetResponse, Error> {
70        let path = format!("/v1/carnet/{carnet_id}/parcels");
71        self.send_authenticated_billing(Method::PUT, &path, Some(payload))
72            .await
73    }
74
75    pub async fn carnet_cancel(&self, carnet_id: i64) -> Result<CarnetResponse, Error> {
76        let path = format!("/v1/carnet/{carnet_id}/cancel");
77        self.send_authenticated_billing::<serde_json::Value, CarnetResponse>(
78            Method::PUT,
79            &path,
80            None,
81        )
82        .await
83    }
84
85    pub async fn carnet_cancel_parcel(
86        &self,
87        carnet_id: i64,
88        parcel: i32,
89    ) -> Result<CarnetResponse, Error> {
90        let path = format!("/v1/carnet/{carnet_id}/parcel/{parcel}/cancel");
91        self.send_authenticated_billing::<serde_json::Value, CarnetResponse>(
92            Method::PUT,
93            &path,
94            None,
95        )
96        .await
97    }
98
99    pub async fn carnet_resend(&self, carnet_id: i64) -> Result<CarnetResponse, Error> {
100        let path = format!("/v1/carnet/{carnet_id}/resend");
101        self.send_authenticated_billing::<serde_json::Value, CarnetResponse>(
102            Method::POST,
103            &path,
104            None,
105        )
106        .await
107    }
108
109    pub async fn carnet_resend_parcel(
110        &self,
111        carnet_id: i64,
112        parcel: i32,
113    ) -> Result<CarnetResponse, Error> {
114        let path = format!("/v1/carnet/{carnet_id}/parcel/{parcel}/resend");
115        self.send_authenticated_billing::<serde_json::Value, CarnetResponse>(
116            Method::POST,
117            &path,
118            None,
119        )
120        .await
121    }
122
123    pub async fn carnet_add_history(
124        &self,
125        carnet_id: i64,
126        payload: &CarnetHistoryRequest,
127    ) -> Result<CarnetResponse, Error> {
128        let path = format!("/v1/carnet/{carnet_id}/history");
129        self.send_authenticated_billing(Method::POST, &path, Some(payload))
130            .await
131    }
132
133    pub async fn carnet_settle(&self, carnet_id: i64) -> Result<CarnetResponse, Error> {
134        let path = format!("/v1/carnet/{carnet_id}/settle");
135        self.send_authenticated_billing::<serde_json::Value, CarnetResponse>(
136            Method::PUT,
137            &path,
138            None,
139        )
140        .await
141    }
142
143    pub async fn carnet_settle_parcel(
144        &self,
145        carnet_id: i64,
146        parcel: i32,
147    ) -> Result<CarnetResponse, Error> {
148        let path = format!("/v1/carnet/{carnet_id}/parcel/{parcel}/settle");
149        self.send_authenticated_billing::<serde_json::Value, CarnetResponse>(
150            Method::PUT,
151            &path,
152            None,
153        )
154        .await
155    }
156}