lago_client/queries/
applied_coupon.rs1use lago_types::{
2 error::{LagoError, Result},
3 requests::applied_coupon::{ApplyCouponRequest, ListAppliedCouponsRequest},
4 responses::applied_coupon::{ApplyCouponResponse, ListAppliedCouponsResponse},
5};
6use url::Url;
7
8use crate::client::LagoClient;
9
10impl LagoClient {
11 pub async fn list_applied_coupons(
19 &self,
20 request: Option<ListAppliedCouponsRequest>,
21 ) -> Result<ListAppliedCouponsResponse> {
22 let request = request.unwrap_or_default();
23 let region = self.config.region()?;
24 let mut url = Url::parse(&format!("{}/applied_coupons", region.endpoint()))
25 .map_err(|e| LagoError::Configuration(format!("Invalid URL: {e}")))?;
26
27 let query_params = request.to_query_params();
28
29 if !query_params.is_empty() {
30 let query_string = query_params
31 .iter()
32 .map(|(k, v)| format!("{k}={v}"))
33 .collect::<Vec<_>>()
34 .join("&");
35 url.set_query(Some(&query_string));
36 }
37
38 self.make_request("GET", url.as_str(), None::<&()>).await
39 }
40
41 pub async fn apply_coupon(&self, request: ApplyCouponRequest) -> Result<ApplyCouponResponse> {
49 let region = self.config.region()?;
50 let url = format!("{}/applied_coupons", region.endpoint());
51
52 self.make_request("POST", &url, Some(&request)).await
53 }
54}