From fe0667ed209db1ab0b8311a17bd5d9ddefbbc45c Mon Sep 17 00:00:00 2001 From: Zack Fu Zi Xiang Date: Fri, 16 Aug 2024 10:40:26 +0800 Subject: [PATCH] feat: use subscription req struct --- libs/client-api/src/http_billing.rs | 22 +++++++++++----------- libs/shared-entity/src/dto/billing_dto.rs | 9 +++++++++ 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/libs/client-api/src/http_billing.rs b/libs/client-api/src/http_billing.rs index 2f3fc307..3e3f06ca 100644 --- a/libs/client-api/src/http_billing.rs +++ b/libs/client-api/src/http_billing.rs @@ -1,7 +1,7 @@ use crate::Client; use client_api_entity::billing_dto::{ - SetSubscriptionRecurringInterval, SubscriptionCancelRequest, SubscriptionPlanDetail, - WorkspaceUsageAndLimit, + SetSubscriptionRecurringInterval, SubscriptionCancelRequest, SubscriptionLinkRequest, + SubscriptionPlanDetail, WorkspaceUsageAndLimit, }; use reqwest::Method; use shared_entity::{ @@ -44,6 +44,14 @@ impl Client { workspace_subscription_plan: SubscriptionPlan, success_url: &str, ) -> Result { + let sub_link_req = SubscriptionLinkRequest { + workspace_subscription_plan, + recurring_interval, + workspace_id, + success_url, + with_test_clock: None, + }; + let url = format!( "{}/billing/api/v1/subscription-link", self.base_billing_url() @@ -51,15 +59,7 @@ impl Client { let resp = self .http_client_with_auth(Method::GET, &url) .await? - .query(&[ - ("workspace_id", workspace_id), - ("recurring_interval", recurring_interval.as_str()), - ( - "workspace_subscription_plan", - workspace_subscription_plan.as_ref(), - ), - ("success_url", success_url), - ]) + .query(&sub_link_req) .send() .await?; diff --git a/libs/shared-entity/src/dto/billing_dto.rs b/libs/shared-entity/src/dto/billing_dto.rs index 827ca1c0..9cb5b909 100644 --- a/libs/shared-entity/src/dto/billing_dto.rs +++ b/libs/shared-entity/src/dto/billing_dto.rs @@ -148,3 +148,12 @@ pub enum Currency { #[default] USD, } + +#[derive(Serialize, Deserialize)] +pub struct SubscriptionLinkRequest<'a> { + pub workspace_subscription_plan: SubscriptionPlan, + pub recurring_interval: RecurringInterval, + pub workspace_id: &'a str, + pub success_url: &'a str, + pub with_test_clock: Option, +}