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}