stripe/resources/
subscription_ext.rs

1use serde::Serialize;
2
3use crate::client::{Client, Response};
4use crate::ids::SubscriptionId;
5use crate::params::SearchList;
6use crate::resources::{CreateSubscriptionItems, Subscription};
7use crate::CancellationDetails;
8
9#[derive(Clone, Debug, Default, Serialize)]
10pub struct CancelSubscription {
11    #[serde(skip_serializing_if = "Option::is_none")]
12    pub cancellation_details: Option<CancellationDetails>,
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub invoice_now: Option<bool>,
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub prorate: Option<bool>,
17}
18
19impl CancelSubscription {
20    pub fn new() -> CancelSubscription {
21        CancelSubscription { cancellation_details: None, invoice_now: None, prorate: None }
22    }
23}
24
25#[derive(Clone, Debug, Default, Serialize)]
26pub struct SubscriptionSearchParams<'a> {
27    pub query: String,
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub limit: Option<u64>,
30    #[serde(skip_serializing_if = "Option::is_none")]
31    pub page: Option<u64>,
32    pub expand: &'a [&'a str],
33}
34
35impl<'a> SubscriptionSearchParams<'a> {
36    pub fn new() -> SubscriptionSearchParams<'a> {
37        SubscriptionSearchParams { query: String::new(), limit: None, page: None, expand: &[] }
38    }
39}
40
41impl Subscription {
42    /// Cancels a subscription.
43    ///
44    /// For more details see <https://stripe.com/docs/api#cancel_subscription>.
45    pub fn cancel(
46        client: &Client,
47        subscription_id: &SubscriptionId,
48        params: CancelSubscription,
49    ) -> Response<Subscription> {
50        client.delete_query(&format!("/subscriptions/{}", subscription_id), params)
51    }
52    /// Searches for a subscription.
53    ///
54    /// For more details see <https://stripe.com/docs/api/subscriptions/search>.
55    pub fn search(
56        client: &Client,
57        params: SubscriptionSearchParams,
58    ) -> Response<SearchList<Subscription>> {
59        client.get_query("/subscriptions/search", params)
60    }
61}
62
63impl CreateSubscriptionItems {
64    pub fn new() -> Self {
65        Default::default()
66    }
67}