shopify_client/services/subscription/
mod.rs1pub mod remote;
2
3use std::sync::Arc;
4
5use crate::{
6 common::types::APIError,
7 types::subscription::{
8 ActiveSubscriptionsResp, CancelSubscriptionResp, CreateCombinedSubscriptionRequest,
9 CreateRecurringSubscriptionRequest, CreateSubscriptionResp, CreateUsageRecordRequest,
10 CreateUsageRecordResp, CreateUsageSubscriptionRequest, ExtendTrialResp, MoneyInput,
11 UpdateCappedAmountResp,
12 },
13};
14
15pub struct Subscription {
16 pub shop_url: Arc<String>,
17 pub version: Arc<String>,
18 pub access_token: Arc<String>,
19}
20
21impl Subscription {
22 pub fn new(shop_url: Arc<String>, version: Arc<String>, access_token: Arc<String>) -> Self {
23 Subscription {
24 shop_url,
25 version,
26 access_token,
27 }
28 }
29
30 pub async fn create_recurring(
31 &self,
32 request: &CreateRecurringSubscriptionRequest,
33 ) -> Result<CreateSubscriptionResp, APIError> {
34 remote::create_recurring_subscription(
35 &self.shop_url,
36 &self.version,
37 &self.access_token,
38 request,
39 )
40 .await
41 }
42
43 pub async fn create_usage(
44 &self,
45 request: &CreateUsageSubscriptionRequest,
46 ) -> Result<CreateSubscriptionResp, APIError> {
47 remote::create_usage_subscription(
48 &self.shop_url,
49 &self.version,
50 &self.access_token,
51 request,
52 )
53 .await
54 }
55
56 pub async fn create_combined(
57 &self,
58 request: &CreateCombinedSubscriptionRequest,
59 ) -> Result<CreateSubscriptionResp, APIError> {
60 remote::create_combined_subscription(
61 &self.shop_url,
62 &self.version,
63 &self.access_token,
64 request,
65 )
66 .await
67 }
68
69 pub async fn cancel(
70 &self,
71 subscription_id: &String,
72 prorate: bool,
73 ) -> Result<CancelSubscriptionResp, APIError> {
74 remote::cancel_subscription(
75 &self.shop_url,
76 &self.version,
77 &self.access_token,
78 subscription_id,
79 prorate,
80 )
81 .await
82 }
83
84 pub async fn extend_trial(
85 &self,
86 subscription_id: &String,
87 days: i32,
88 ) -> Result<ExtendTrialResp, APIError> {
89 remote::extend_trial(
90 &self.shop_url,
91 &self.version,
92 &self.access_token,
93 subscription_id,
94 days,
95 )
96 .await
97 }
98
99 pub async fn update_capped_amount(
100 &self,
101 line_item_id: &String,
102 capped_amount: &MoneyInput,
103 ) -> Result<UpdateCappedAmountResp, APIError> {
104 remote::update_capped_amount(
105 &self.shop_url,
106 &self.version,
107 &self.access_token,
108 line_item_id,
109 capped_amount,
110 )
111 .await
112 }
113
114 pub async fn create_usage_record(
115 &self,
116 request: &CreateUsageRecordRequest,
117 ) -> Result<CreateUsageRecordResp, APIError> {
118 remote::create_usage_record(&self.shop_url, &self.version, &self.access_token, request)
119 .await
120 }
121
122 pub async fn get_active_subscriptions(&self) -> Result<ActiveSubscriptionsResp, APIError> {
123 remote::get_active_subscriptions(&self.shop_url, &self.version, &self.access_token).await
124 }
125}