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