stripe/resources/
subscription_ext.rs1use 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 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 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}