@@ -9,10 +9,12 @@ import '../client.dart';
99import '_resource.dart' ;
1010
1111class SubscriptionResource extends Resource <Subscription > {
12+ static const _resourceName = 'subscriptions' ;
13+
1214 SubscriptionResource (Client client) : super (client);
1315
1416 Future <Subscription > retrieve (String id) async {
15- final response = await get ('subscriptions /$id ' );
17+ final response = await get ('$ _resourceName /$id ' );
1618 return Subscription .fromJson (response);
1719 }
1820
@@ -22,7 +24,7 @@ class SubscriptionResource extends Resource<Subscription> {
2224 }) async {
2325 final expandableFields = _expandableFields (expand);
2426 final response = await get (
25- 'subscriptions /$id ' ,
27+ '$ _resourceName /$id ' ,
2628 queryParameters: {
2729 'expand' : expandableFields.map ((e) => e.field).toList (),
2830 },
@@ -58,17 +60,55 @@ class SubscriptionResource extends Resource<Subscription> {
5860
5961 Future <DataList <Subscription >> list (
6062 [ListSubscriptionsRequest ? request]) async {
61- final map = await get ('subscriptions' , queryParameters: request? .toJson ());
63+ final map = await get (_resourceName , queryParameters: request? .toJson ());
6264 return DataList <Subscription >.fromJson (
6365 map, (value) => Subscription .fromJson (value as Map <String , dynamic >));
6466 }
6567
68+ Future <DataList <SubscriptionExpanded >> listExpanded ({
69+ required Set <SubscriptionExpandableField > expand,
70+ ListSubscriptionsRequest ? request,
71+ }) async {
72+ final expandableFields = _expandableFields (expand);
73+
74+ final response = await get (
75+ _resourceName,
76+ queryParameters: {
77+ ...? request? .toJson (),
78+ 'expand' : expandableFields.map ((e) => 'data.${e .field }' ).toList (),
79+ },
80+ );
81+
82+ return DataList <SubscriptionExpanded >.fromJson (
83+ response,
84+ (value) => _parseSubscriptionExpanded (
85+ value as Map <String , dynamic >,
86+ expand,
87+ ),
88+ );
89+ }
90+
91+ SubscriptionExpanded _parseSubscriptionExpanded (
92+ Map <String , dynamic > json,
93+ Set <SubscriptionExpandableField > expand,
94+ ) {
95+ List <Discount >? discounts;
96+ if (expand.contains (SubscriptionExpandableField .discounts)) {
97+ discounts = _DiscountsExpandableField ().extract (json);
98+ }
99+
100+ return SubscriptionExpanded (
101+ subscription: Subscription .fromJson (json),
102+ discounts: discounts,
103+ );
104+ }
105+
66106 Future <DataList <Subscription >> search ({
67107 /// https://docs.stripe.com/search#query-fields-for-subscriptions
68108 required String queryString,
69109 }) async {
70110 final Map <String , dynamic > map = await get (
71- 'subscriptions /search' ,
111+ '$ _resourceName /search' ,
72112 queryParameters: {'query' : queryString},
73113 );
74114
@@ -87,7 +127,7 @@ class SubscriptionResource extends Resource<Subscription> {
87127 required SubscriptionUpdate update,
88128 }) async {
89129 final response = await post (
90- 'subscriptions /$id ' ,
130+ '$ _resourceName /$id ' ,
91131 data: update.toJson (),
92132 );
93133
@@ -101,7 +141,7 @@ class SubscriptionResource extends Resource<Subscription> {
101141 bool ? prorate,
102142 }) async {
103143 final response = await delete (
104- 'subscriptions /$id ' ,
144+ '$ _resourceName /$id ' ,
105145 data: {
106146 if (invoiceNow != null ) 'invoice_now' : invoiceNow,
107147 if (prorate != null ) 'prorate' : invoiceNow,
0 commit comments