From ae4764d0c2fa205793a603ae1e7a34000aff8b0e Mon Sep 17 00:00:00 2001 From: solid-maksymtielnyi Date: Fri, 9 Aug 2024 18:06:25 +0300 Subject: [PATCH 1/3] Add SubscriptionResource.listExpanded method --- lib/src/resources/subscription.dart | 52 +++++++++++++++++++++++++---- 1 file changed, 46 insertions(+), 6 deletions(-) diff --git a/lib/src/resources/subscription.dart b/lib/src/resources/subscription.dart index 76c6a73..e0448cb 100644 --- a/lib/src/resources/subscription.dart +++ b/lib/src/resources/subscription.dart @@ -9,10 +9,12 @@ import '../client.dart'; import '_resource.dart'; class SubscriptionResource extends Resource { + static const _resourceName = 'subscriptions'; + SubscriptionResource(Client client) : super(client); Future retrieve(String id) async { - final response = await get('subscriptions/$id'); + final response = await get('$_resourceName/$id'); return Subscription.fromJson(response); } @@ -22,7 +24,7 @@ class SubscriptionResource extends Resource { }) async { final expandableFields = _expandableFields(expand); final response = await get( - 'subscriptions/$id', + '$_resourceName/$id', queryParameters: { 'expand': expandableFields.map((e) => e.field).toList(), }, @@ -58,17 +60,55 @@ class SubscriptionResource extends Resource { Future> list( [ListSubscriptionsRequest? request]) async { - final map = await get('subscriptions', queryParameters: request?.toJson()); + final map = await get(_resourceName, queryParameters: request?.toJson()); return DataList.fromJson( map, (value) => Subscription.fromJson(value as Map)); } + Future> listExpanded({ + required Set expand, + ListSubscriptionsRequest? request, + }) async { + final expandableFields = _expandableFields(expand); + + final response = await get( + _resourceName, + queryParameters: { + ...?request?.toJson(), + 'expand': expandableFields, + }, + ); + + return DataList.fromJson( + response, + (value) => _parseSubscriptionExpanded( + value as Map, + expand, + ), + ); + } + + SubscriptionExpanded _parseSubscriptionExpanded( + Map json, + Set expand, + ) { + List? discounts; + if (expand.contains(SubscriptionExpandableField.discounts)) { + discounts = _DiscountsExpandableField().extract(json); + } + + return SubscriptionExpanded( + subscription: Subscription.fromJson(json), + discounts: discounts, + ); + } + Future> search({ /// https://docs.stripe.com/search#query-fields-for-subscriptions required String queryString, }) async { final Map map = await get( - 'subscriptions/search', + '$_resourceName/search', queryParameters: {'query': queryString}, ); @@ -87,7 +127,7 @@ class SubscriptionResource extends Resource { required SubscriptionUpdate update, }) async { final response = await post( - 'subscriptions/$id', + '$_resourceName/$id', data: update.toJson(), ); @@ -101,7 +141,7 @@ class SubscriptionResource extends Resource { bool? prorate, }) async { final response = await delete( - 'subscriptions/$id', + '$_resourceName/$id', data: { if (invoiceNow != null) 'invoice_now': invoiceNow, if (prorate != null) 'prorate': invoiceNow, From c5a4966c0437a483a35c5eb37340dee8cf85cfb4 Mon Sep 17 00:00:00 2001 From: solid-maksymtielnyi Date: Sat, 10 Aug 2024 01:00:02 +0300 Subject: [PATCH 2/3] Add SubscriptionResource.listExpanded expand parameter --- lib/src/resources/subscription.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/resources/subscription.dart b/lib/src/resources/subscription.dart index e0448cb..e9bf277 100644 --- a/lib/src/resources/subscription.dart +++ b/lib/src/resources/subscription.dart @@ -75,7 +75,7 @@ class SubscriptionResource extends Resource { _resourceName, queryParameters: { ...?request?.toJson(), - 'expand': expandableFields, + 'expand': expandableFields.map((e) => e.field).toList(), }, ); From 67b478d62f3df0a5f0fc7c162a320ff80ff2481d Mon Sep 17 00:00:00 2001 From: solid-maksymtielnyi Date: Sat, 10 Aug 2024 01:03:19 +0300 Subject: [PATCH 3/3] SubscriptionResource.listExpanded: add "data." before "expand" --- lib/src/resources/subscription.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/resources/subscription.dart b/lib/src/resources/subscription.dart index e9bf277..4678a3f 100644 --- a/lib/src/resources/subscription.dart +++ b/lib/src/resources/subscription.dart @@ -75,7 +75,7 @@ class SubscriptionResource extends Resource { _resourceName, queryParameters: { ...?request?.toJson(), - 'expand': expandableFields.map((e) => e.field).toList(), + 'expand': expandableFields.map((e) => 'data.${e.field}').toList(), }, );