stripe 5.44.0 → 5.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -2
- data/VERSION +1 -1
- data/lib/stripe/api_operations/search.rb +19 -0
- data/lib/stripe/api_resource.rb +2 -17
- data/lib/stripe/api_resource_test_helpers.rb +47 -0
- data/lib/stripe/object_types.rb +2 -0
- data/lib/stripe/resources/charge.rb +9 -0
- data/lib/stripe/resources/customer.rb +9 -0
- data/lib/stripe/resources/invoice.rb +9 -0
- data/lib/stripe/resources/payment_intent.rb +9 -0
- data/lib/stripe/resources/price.rb +9 -0
- data/lib/stripe/resources/product.rb +9 -0
- data/lib/stripe/resources/refund.rb +11 -0
- data/lib/stripe/resources/subscription.rb +9 -0
- data/lib/stripe/resources/test_helpers/test_clock.rb +25 -0
- data/lib/stripe/resources.rb +1 -0
- data/lib/stripe/search_result_object.rb +86 -0
- data/lib/stripe/util.rb +47 -0
- data/lib/stripe/version.rb +1 -1
- data/lib/stripe.rb +3 -0
- metadata +6 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b214442a5d4e98a82fb5f1566e55969c0af85298f3bde7cfe77c8fdd3c34f59e
|
|
4
|
+
data.tar.gz: 8b402f5fa893793576f4d2ae830476ed626850cc3a44e201d3e5f23d5e4069ad
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c25f86d87cae70a56a406a50651a923e652e1db189fd987ba37b3d6081658c25d142285c7f969fc8d3ce80a86c54dc628a356fc3d17d8354bfa7884c4abea0f8
|
|
7
|
+
data.tar.gz: 5591798e38bd9b2e59fd8357b377842f281353832eb450580488393a311e7a62d882feeddcb58bbdda3363691a871d3c091801b2734367f17534a4629321a767
|
data/CHANGELOG.md
CHANGED
|
@@ -1,9 +1,24 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 5.47.0 - 2022-03-29
|
|
4
|
+
* [#1040](https://github.com/stripe/stripe-ruby/pull/1040) API Updates
|
|
5
|
+
* Add support for Search API
|
|
6
|
+
* Add support for `search` method on resources `Charge`, `Customer`, `Invoice`, `PaymentIntent`, `Price`, `Product`, and `Subscription`
|
|
7
|
+
|
|
8
|
+
* [#1034](https://github.com/stripe/stripe-ruby/pull/1034) Add supporting classes for test helper generation
|
|
9
|
+
|
|
10
|
+
## 5.46.0 - 2022-03-23
|
|
11
|
+
* [#1039](https://github.com/stripe/stripe-ruby/pull/1039) API Updates
|
|
12
|
+
* Add support for `cancel` method on resource `Refund`
|
|
13
|
+
* [#992](https://github.com/stripe/stripe-ruby/pull/992) Add support for Search API
|
|
14
|
+
|
|
15
|
+
## 5.45.0 - 2022-03-01
|
|
16
|
+
* [#1035](https://github.com/stripe/stripe-ruby/pull/1035) API Updates
|
|
17
|
+
* Add support for new resource `TestHelpers.TestClock`
|
|
18
|
+
|
|
3
19
|
## 5.44.0 - 2022-02-16
|
|
4
20
|
* [#1032](https://github.com/stripe/stripe-ruby/pull/1032) API Updates
|
|
5
|
-
* Add support for `verify_microdeposits` method on resources `PaymentIntent` and `SetupIntent`
|
|
6
|
-
|
|
21
|
+
* Add support for `verify_microdeposits` method on resources `PaymentIntent` and `SetupIntent`
|
|
7
22
|
|
|
8
23
|
## 5.43.0 - 2022-01-20
|
|
9
24
|
* [#1031](https://github.com/stripe/stripe-ruby/pull/1031) API Updates
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
5.
|
|
1
|
+
5.47.0
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Stripe
|
|
4
|
+
module APIOperations
|
|
5
|
+
module Search
|
|
6
|
+
def _search(search_url, filters = {}, opts = {})
|
|
7
|
+
opts = Util.normalize_opts(opts)
|
|
8
|
+
|
|
9
|
+
resp, opts = execute_resource_request(:get, search_url, filters, opts)
|
|
10
|
+
obj = SearchResultObject.construct_from(resp.data, opts)
|
|
11
|
+
|
|
12
|
+
# set filters so that we can fetch the same limit and query
|
|
13
|
+
# when accessing the next page
|
|
14
|
+
obj.filters = filters.dup
|
|
15
|
+
obj
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
data/lib/stripe/api_resource.rb
CHANGED
|
@@ -63,22 +63,7 @@ module Stripe
|
|
|
63
63
|
# adds a `capture` class method to the resource class that, when called,
|
|
64
64
|
# will send a POST request to `/v1/<object_name>/capture`.
|
|
65
65
|
def self.custom_method(name, http_verb:, http_path: nil)
|
|
66
|
-
|
|
67
|
-
raise ArgumentError,
|
|
68
|
-
"Invalid http_verb value: #{http_verb.inspect}. Should be one " \
|
|
69
|
-
"of :get, :post or :delete."
|
|
70
|
-
end
|
|
71
|
-
http_path ||= name.to_s
|
|
72
|
-
define_singleton_method(name) do |id, params = {}, opts = {}|
|
|
73
|
-
unless id.is_a?(String)
|
|
74
|
-
raise ArgumentError,
|
|
75
|
-
"id should be a string representing the ID of an API resource"
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
url = "#{resource_url}/#{CGI.escape(id)}/#{CGI.escape(http_path)}"
|
|
79
|
-
resp, opts = execute_resource_request(http_verb, url, params, opts)
|
|
80
|
-
Util.convert_to_stripe_object(resp.data, opts)
|
|
81
|
-
end
|
|
66
|
+
Util.custom_method self, self, name, http_verb, http_path
|
|
82
67
|
end
|
|
83
68
|
|
|
84
69
|
def resource_url
|
|
@@ -105,7 +90,7 @@ module Stripe
|
|
|
105
90
|
instance
|
|
106
91
|
end
|
|
107
92
|
|
|
108
|
-
|
|
93
|
+
def request_stripe_object(method:, path:, params:, opts: {})
|
|
109
94
|
resp, opts = execute_resource_request(method, path, params, opts)
|
|
110
95
|
|
|
111
96
|
# If we're getting back this thing, update; otherwise, instantiate.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Stripe
|
|
4
|
+
# The base class for nested TestHelpers classes in resource objects.
|
|
5
|
+
# The APIResourceTestHelpers handles URL generation and custom method
|
|
6
|
+
# support for test-helper methods.
|
|
7
|
+
#
|
|
8
|
+
# class MyAPIResource < APIResource
|
|
9
|
+
# class TestHelpers < APIResourceTestHelpers
|
|
10
|
+
class APIResourceTestHelpers
|
|
11
|
+
def initialize(resource)
|
|
12
|
+
@resource = resource
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Adds a custom method to a test helper. This is used to add support for
|
|
16
|
+
# non-CRUDL API requests, e.g. capturing charges. custom_method takes the
|
|
17
|
+
# following parameters:
|
|
18
|
+
# - name: the name of the custom method to create (as a symbol)
|
|
19
|
+
# - http_verb: the HTTP verb for the API request (:get, :post, or :delete)
|
|
20
|
+
# - http_path: the path to append to the resource's URL. If not provided,
|
|
21
|
+
# the name is used as the path
|
|
22
|
+
#
|
|
23
|
+
# For example, this call:
|
|
24
|
+
# custom_method :capture, http_verb: post
|
|
25
|
+
# adds a `capture` class method to the resource class that, when called,
|
|
26
|
+
# will send a POST request to `/v1/<object_name>/capture`.
|
|
27
|
+
def self.custom_method(name, http_verb:, http_path: nil)
|
|
28
|
+
Util.custom_method self::RESOURCE_CLASS, self, name, http_verb, http_path
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def self.resource_url
|
|
32
|
+
"/v1/test_helpers/"\
|
|
33
|
+
"#{self::RESOURCE_CLASS::OBJECT_NAME.downcase.tr('.', '/')}s"
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def resource_url
|
|
37
|
+
unless (id = @resource["id"])
|
|
38
|
+
raise InvalidRequestError.new(
|
|
39
|
+
"Could not determine which URL to request: #{self.class} instance " \
|
|
40
|
+
"has invalid ID: #{id.inspect}",
|
|
41
|
+
"id"
|
|
42
|
+
)
|
|
43
|
+
end
|
|
44
|
+
"#{self.class.resource_url}/#{CGI.escape(id)}"
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
data/lib/stripe/object_types.rb
CHANGED
|
@@ -9,6 +9,7 @@ module Stripe
|
|
|
9
9
|
{
|
|
10
10
|
# data structures
|
|
11
11
|
ListObject::OBJECT_NAME => ListObject,
|
|
12
|
+
SearchResultObject::OBJECT_NAME => SearchResultObject,
|
|
12
13
|
|
|
13
14
|
# business objects
|
|
14
15
|
Account::OBJECT_NAME => Account,
|
|
@@ -94,6 +95,7 @@ module Stripe
|
|
|
94
95
|
Terminal::ConnectionToken::OBJECT_NAME => Terminal::ConnectionToken,
|
|
95
96
|
Terminal::Location::OBJECT_NAME => Terminal::Location,
|
|
96
97
|
Terminal::Reader::OBJECT_NAME => Terminal::Reader,
|
|
98
|
+
TestHelpers::TestClock::OBJECT_NAME => TestHelpers::TestClock,
|
|
97
99
|
ThreeDSecure::OBJECT_NAME => ThreeDSecure,
|
|
98
100
|
Token::OBJECT_NAME => Token,
|
|
99
101
|
Topup::OBJECT_NAME => Topup,
|
|
@@ -5,6 +5,7 @@ module Stripe
|
|
|
5
5
|
class Charge < APIResource
|
|
6
6
|
extend Stripe::APIOperations::Create
|
|
7
7
|
extend Stripe::APIOperations::List
|
|
8
|
+
extend Stripe::APIOperations::Search
|
|
8
9
|
include Stripe::APIOperations::Save
|
|
9
10
|
|
|
10
11
|
OBJECT_NAME = "charge"
|
|
@@ -19,5 +20,13 @@ module Stripe
|
|
|
19
20
|
opts: opts
|
|
20
21
|
)
|
|
21
22
|
end
|
|
23
|
+
|
|
24
|
+
def self.search(params = {}, opts = {})
|
|
25
|
+
_search("/v1/charges/search", params, opts)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.search_auto_paging_each(params = {}, opts = {}, &blk)
|
|
29
|
+
search(params, opts).auto_paging_each(&blk)
|
|
30
|
+
end
|
|
22
31
|
end
|
|
23
32
|
end
|
|
@@ -6,6 +6,7 @@ module Stripe
|
|
|
6
6
|
extend Stripe::APIOperations::Create
|
|
7
7
|
include Stripe::APIOperations::Delete
|
|
8
8
|
extend Stripe::APIOperations::List
|
|
9
|
+
extend Stripe::APIOperations::Search
|
|
9
10
|
include Stripe::APIOperations::Save
|
|
10
11
|
extend Stripe::APIOperations::NestedResource
|
|
11
12
|
|
|
@@ -48,5 +49,13 @@ module Stripe
|
|
|
48
49
|
resp, opts = execute_resource_request(:delete, resource_url + "/discount")
|
|
49
50
|
Util.convert_to_stripe_object(resp.data, opts)
|
|
50
51
|
end
|
|
52
|
+
|
|
53
|
+
def self.search(params = {}, opts = {})
|
|
54
|
+
_search("/v1/customers/search", params, opts)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def self.search_auto_paging_each(params = {}, opts = {}, &blk)
|
|
58
|
+
search(params, opts).auto_paging_each(&blk)
|
|
59
|
+
end
|
|
51
60
|
end
|
|
52
61
|
end
|
|
@@ -6,6 +6,7 @@ module Stripe
|
|
|
6
6
|
extend Stripe::APIOperations::Create
|
|
7
7
|
include Stripe::APIOperations::Delete
|
|
8
8
|
extend Stripe::APIOperations::List
|
|
9
|
+
extend Stripe::APIOperations::Search
|
|
9
10
|
include Stripe::APIOperations::Save
|
|
10
11
|
|
|
11
12
|
OBJECT_NAME = "invoice"
|
|
@@ -70,5 +71,13 @@ module Stripe
|
|
|
70
71
|
resp, opts = execute_resource_request(:get, resource_url + "/upcoming/lines", params, opts)
|
|
71
72
|
Util.convert_to_stripe_object(resp.data, opts)
|
|
72
73
|
end
|
|
74
|
+
|
|
75
|
+
def self.search(params = {}, opts = {})
|
|
76
|
+
_search("/v1/invoices/search", params, opts)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def self.search_auto_paging_each(params = {}, opts = {}, &blk)
|
|
80
|
+
search(params, opts).auto_paging_each(&blk)
|
|
81
|
+
end
|
|
73
82
|
end
|
|
74
83
|
end
|
|
@@ -5,6 +5,7 @@ module Stripe
|
|
|
5
5
|
class PaymentIntent < APIResource
|
|
6
6
|
extend Stripe::APIOperations::Create
|
|
7
7
|
extend Stripe::APIOperations::List
|
|
8
|
+
extend Stripe::APIOperations::Search
|
|
8
9
|
include Stripe::APIOperations::Save
|
|
9
10
|
|
|
10
11
|
OBJECT_NAME = "payment_intent"
|
|
@@ -49,5 +50,13 @@ module Stripe
|
|
|
49
50
|
opts: opts
|
|
50
51
|
)
|
|
51
52
|
end
|
|
53
|
+
|
|
54
|
+
def self.search(params = {}, opts = {})
|
|
55
|
+
_search("/v1/payment_intents/search", params, opts)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def self.search_auto_paging_each(params = {}, opts = {}, &blk)
|
|
59
|
+
search(params, opts).auto_paging_each(&blk)
|
|
60
|
+
end
|
|
52
61
|
end
|
|
53
62
|
end
|
|
@@ -5,8 +5,17 @@ module Stripe
|
|
|
5
5
|
class Price < APIResource
|
|
6
6
|
extend Stripe::APIOperations::Create
|
|
7
7
|
extend Stripe::APIOperations::List
|
|
8
|
+
extend Stripe::APIOperations::Search
|
|
8
9
|
include Stripe::APIOperations::Save
|
|
9
10
|
|
|
10
11
|
OBJECT_NAME = "price"
|
|
12
|
+
|
|
13
|
+
def self.search(params = {}, opts = {})
|
|
14
|
+
_search("/v1/prices/search", params, opts)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.search_auto_paging_each(params = {}, opts = {}, &blk)
|
|
18
|
+
search(params, opts).auto_paging_each(&blk)
|
|
19
|
+
end
|
|
11
20
|
end
|
|
12
21
|
end
|
|
@@ -6,8 +6,17 @@ module Stripe
|
|
|
6
6
|
extend Stripe::APIOperations::Create
|
|
7
7
|
include Stripe::APIOperations::Delete
|
|
8
8
|
extend Stripe::APIOperations::List
|
|
9
|
+
extend Stripe::APIOperations::Search
|
|
9
10
|
include Stripe::APIOperations::Save
|
|
10
11
|
|
|
11
12
|
OBJECT_NAME = "product"
|
|
13
|
+
|
|
14
|
+
def self.search(params = {}, opts = {})
|
|
15
|
+
_search("/v1/products/search", params, opts)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.search_auto_paging_each(params = {}, opts = {}, &blk)
|
|
19
|
+
search(params, opts).auto_paging_each(&blk)
|
|
20
|
+
end
|
|
12
21
|
end
|
|
13
22
|
end
|
|
@@ -8,5 +8,16 @@ module Stripe
|
|
|
8
8
|
include Stripe::APIOperations::Save
|
|
9
9
|
|
|
10
10
|
OBJECT_NAME = "refund"
|
|
11
|
+
|
|
12
|
+
custom_method :cancel, http_verb: :post
|
|
13
|
+
|
|
14
|
+
def cancel(params = {}, opts = {})
|
|
15
|
+
request_stripe_object(
|
|
16
|
+
method: :post,
|
|
17
|
+
path: resource_url + "/cancel",
|
|
18
|
+
params: params,
|
|
19
|
+
opts: opts
|
|
20
|
+
)
|
|
21
|
+
end
|
|
11
22
|
end
|
|
12
23
|
end
|
|
@@ -6,6 +6,7 @@ module Stripe
|
|
|
6
6
|
extend Stripe::APIOperations::Create
|
|
7
7
|
include Stripe::APIOperations::Delete
|
|
8
8
|
extend Stripe::APIOperations::List
|
|
9
|
+
extend Stripe::APIOperations::Search
|
|
9
10
|
include Stripe::APIOperations::Save
|
|
10
11
|
|
|
11
12
|
OBJECT_NAME = "subscription"
|
|
@@ -22,5 +23,13 @@ module Stripe
|
|
|
22
23
|
end
|
|
23
24
|
|
|
24
25
|
save_nested_resource :source
|
|
26
|
+
|
|
27
|
+
def self.search(params = {}, opts = {})
|
|
28
|
+
_search("/v1/subscriptions/search", params, opts)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def self.search_auto_paging_each(params = {}, opts = {}, &blk)
|
|
32
|
+
search(params, opts).auto_paging_each(&blk)
|
|
33
|
+
end
|
|
25
34
|
end
|
|
26
35
|
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Stripe
|
|
5
|
+
module TestHelpers
|
|
6
|
+
class TestClock < APIResource
|
|
7
|
+
extend Stripe::APIOperations::Create
|
|
8
|
+
include Stripe::APIOperations::Delete
|
|
9
|
+
extend Stripe::APIOperations::List
|
|
10
|
+
|
|
11
|
+
OBJECT_NAME = "test_helpers.test_clock"
|
|
12
|
+
|
|
13
|
+
custom_method :advance, http_verb: :post
|
|
14
|
+
|
|
15
|
+
def advance(params = {}, opts = {})
|
|
16
|
+
request_stripe_object(
|
|
17
|
+
method: :post,
|
|
18
|
+
path: resource_url + "/advance",
|
|
19
|
+
params: params,
|
|
20
|
+
opts: opts
|
|
21
|
+
)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
data/lib/stripe/resources.rb
CHANGED
|
@@ -83,6 +83,7 @@ require "stripe/resources/tax_rate"
|
|
|
83
83
|
require "stripe/resources/terminal/connection_token"
|
|
84
84
|
require "stripe/resources/terminal/location"
|
|
85
85
|
require "stripe/resources/terminal/reader"
|
|
86
|
+
require "stripe/resources/test_helpers/test_clock"
|
|
86
87
|
require "stripe/resources/three_d_secure"
|
|
87
88
|
require "stripe/resources/token"
|
|
88
89
|
require "stripe/resources/topup"
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Stripe
|
|
4
|
+
class SearchResultObject < StripeObject
|
|
5
|
+
include Enumerable
|
|
6
|
+
include Stripe::APIOperations::Search
|
|
7
|
+
include Stripe::APIOperations::Request
|
|
8
|
+
|
|
9
|
+
OBJECT_NAME = "search_result"
|
|
10
|
+
|
|
11
|
+
# This accessor allows a `SearchResultObject` to inherit various filters
|
|
12
|
+
# that were given to a predecessor. This allows for things like consistent
|
|
13
|
+
# limits, expansions, and predicates as a user pages through resources.
|
|
14
|
+
attr_accessor :filters
|
|
15
|
+
|
|
16
|
+
# An empty search result object. This is returned from +next+ when we know
|
|
17
|
+
# that there isn't a next page in order to replicate the behavior of the API
|
|
18
|
+
# when it attempts to return a page beyond the last.
|
|
19
|
+
def self.empty_search_result(opts = {})
|
|
20
|
+
SearchResultObject.construct_from({ data: [] }, opts)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def initialize(*args)
|
|
24
|
+
super
|
|
25
|
+
self.filters = {}
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def [](key)
|
|
29
|
+
case key
|
|
30
|
+
when String, Symbol
|
|
31
|
+
super
|
|
32
|
+
else
|
|
33
|
+
raise ArgumentError,
|
|
34
|
+
"You tried to access the #{key.inspect} index, but " \
|
|
35
|
+
"SearchResultObject types only support String keys. " \
|
|
36
|
+
"(HINT: Search calls return an object with a 'data' (which is " \
|
|
37
|
+
"the data array). You likely want to call #data[#{key.inspect}])"
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Iterates through each resource in the page represented by the current
|
|
42
|
+
# `SearchListObject`.
|
|
43
|
+
#
|
|
44
|
+
# Note that this method makes no effort to fetch a new page when it gets to
|
|
45
|
+
# the end of the current page's resources. See also +auto_paging_each+.
|
|
46
|
+
def each(&blk)
|
|
47
|
+
data.each(&blk)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Returns true if the page object contains no elements.
|
|
51
|
+
def empty?
|
|
52
|
+
data.empty?
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Iterates through each resource in all pages, making additional fetches to
|
|
56
|
+
# the API as necessary.
|
|
57
|
+
#
|
|
58
|
+
# Note that this method will make as many API calls as necessary to fetch
|
|
59
|
+
# all resources. For more granular control, please see +each+ and
|
|
60
|
+
# +next_search_result_page+.
|
|
61
|
+
def auto_paging_each(&blk)
|
|
62
|
+
return enum_for(:auto_paging_each) unless block_given?
|
|
63
|
+
|
|
64
|
+
page = self
|
|
65
|
+
|
|
66
|
+
loop do
|
|
67
|
+
page.each(&blk)
|
|
68
|
+
page = page.next_search_result_page
|
|
69
|
+
|
|
70
|
+
break if page.empty?
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Fetches the next page in the resource list (if there is one).
|
|
75
|
+
#
|
|
76
|
+
# This method will try to respect the limit of the current page. If none
|
|
77
|
+
# was given, the default limit will be fetched again.
|
|
78
|
+
def next_search_result_page(params = {}, opts = {})
|
|
79
|
+
return self.class.empty_search_result(opts) unless has_more
|
|
80
|
+
|
|
81
|
+
params = filters.merge(page: next_page).merge(params)
|
|
82
|
+
|
|
83
|
+
_search(url, params, opts)
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
data/lib/stripe/util.rb
CHANGED
|
@@ -47,6 +47,53 @@ module Stripe
|
|
|
47
47
|
Util.object_classes[object_name] == klass
|
|
48
48
|
end
|
|
49
49
|
|
|
50
|
+
# Adds a custom method to a resource class. This is used to add support for
|
|
51
|
+
# non-CRUDL API requests, e.g. capturing charges. custom_method takes the
|
|
52
|
+
# following parameters:
|
|
53
|
+
# - name: the name of the custom method to create (as a symbol)
|
|
54
|
+
# - http_verb: the HTTP verb for the API request (:get, :post, or :delete)
|
|
55
|
+
# - http_path: the path to append to the resource's URL. If not provided,
|
|
56
|
+
# the name is used as the path
|
|
57
|
+
# - resource: the resource implementation class
|
|
58
|
+
# - target: the class that custom static method will be added to
|
|
59
|
+
#
|
|
60
|
+
# For example, this call:
|
|
61
|
+
# custom_method :capture, http_verb: post
|
|
62
|
+
# adds a `capture` class method to the resource class that, when called,
|
|
63
|
+
# will send a POST request to `/v1/<object_name>/capture`.
|
|
64
|
+
def self.custom_method(resource, target, name, http_verb, http_path)
|
|
65
|
+
unless %i[get post delete].include?(http_verb)
|
|
66
|
+
raise ArgumentError,
|
|
67
|
+
"Invalid http_verb value: #{http_verb.inspect}. Should be one " \
|
|
68
|
+
"of :get, :post or :delete."
|
|
69
|
+
end
|
|
70
|
+
unless target.respond_to?(:resource_url)
|
|
71
|
+
raise ArgumentError,
|
|
72
|
+
"Invalid target value: #{target}. Target class should have a " \
|
|
73
|
+
"`resource_url` method."
|
|
74
|
+
end
|
|
75
|
+
http_path ||= name.to_s
|
|
76
|
+
target.define_singleton_method(name) do |id, params = {}, opts = {}|
|
|
77
|
+
unless id.is_a?(String)
|
|
78
|
+
raise ArgumentError,
|
|
79
|
+
"id should be a string representing the ID of an API resource"
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
url = "#{target.resource_url}/"\
|
|
83
|
+
"#{CGI.escape(id)}/"\
|
|
84
|
+
"#{CGI.escape(http_path)}"
|
|
85
|
+
|
|
86
|
+
resp, opts = resource.execute_resource_request(
|
|
87
|
+
http_verb,
|
|
88
|
+
url,
|
|
89
|
+
params,
|
|
90
|
+
opts
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
Util.convert_to_stripe_object(resp.data, opts)
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
50
97
|
# Converts a hash of fields or an array of hashes into a +StripeObject+ or
|
|
51
98
|
# array of +StripeObject+s. These new objects will be created as a concrete
|
|
52
99
|
# type as dictated by their `object` field (e.g. an `object` value of
|
data/lib/stripe/version.rb
CHANGED
data/lib/stripe.rb
CHANGED
|
@@ -24,6 +24,7 @@ require "stripe/api_operations/list"
|
|
|
24
24
|
require "stripe/api_operations/nested_resource"
|
|
25
25
|
require "stripe/api_operations/request"
|
|
26
26
|
require "stripe/api_operations/save"
|
|
27
|
+
require "stripe/api_operations/search"
|
|
27
28
|
|
|
28
29
|
# API resource support classes
|
|
29
30
|
require "stripe/errors"
|
|
@@ -35,8 +36,10 @@ require "stripe/stripe_client"
|
|
|
35
36
|
require "stripe/stripe_object"
|
|
36
37
|
require "stripe/stripe_response"
|
|
37
38
|
require "stripe/list_object"
|
|
39
|
+
require "stripe/search_result_object"
|
|
38
40
|
require "stripe/error_object"
|
|
39
41
|
require "stripe/api_resource"
|
|
42
|
+
require "stripe/api_resource_test_helpers"
|
|
40
43
|
require "stripe/singleton_api_resource"
|
|
41
44
|
require "stripe/webhook"
|
|
42
45
|
require "stripe/stripe_configuration"
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: stripe
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 5.
|
|
4
|
+
version: 5.47.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Stripe
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-
|
|
11
|
+
date: 2022-03-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: Stripe is the easiest way to accept payments online. See https://stripe.com
|
|
14
14
|
for details.
|
|
@@ -36,7 +36,9 @@ files:
|
|
|
36
36
|
- lib/stripe/api_operations/nested_resource.rb
|
|
37
37
|
- lib/stripe/api_operations/request.rb
|
|
38
38
|
- lib/stripe/api_operations/save.rb
|
|
39
|
+
- lib/stripe/api_operations/search.rb
|
|
39
40
|
- lib/stripe/api_resource.rb
|
|
41
|
+
- lib/stripe/api_resource_test_helpers.rb
|
|
40
42
|
- lib/stripe/connection_manager.rb
|
|
41
43
|
- lib/stripe/error_object.rb
|
|
42
44
|
- lib/stripe/errors.rb
|
|
@@ -128,6 +130,7 @@ files:
|
|
|
128
130
|
- lib/stripe/resources/terminal/connection_token.rb
|
|
129
131
|
- lib/stripe/resources/terminal/location.rb
|
|
130
132
|
- lib/stripe/resources/terminal/reader.rb
|
|
133
|
+
- lib/stripe/resources/test_helpers/test_clock.rb
|
|
131
134
|
- lib/stripe/resources/three_d_secure.rb
|
|
132
135
|
- lib/stripe/resources/token.rb
|
|
133
136
|
- lib/stripe/resources/topup.rb
|
|
@@ -135,6 +138,7 @@ files:
|
|
|
135
138
|
- lib/stripe/resources/usage_record.rb
|
|
136
139
|
- lib/stripe/resources/usage_record_summary.rb
|
|
137
140
|
- lib/stripe/resources/webhook_endpoint.rb
|
|
141
|
+
- lib/stripe/search_result_object.rb
|
|
138
142
|
- lib/stripe/singleton_api_resource.rb
|
|
139
143
|
- lib/stripe/stripe_client.rb
|
|
140
144
|
- lib/stripe/stripe_configuration.rb
|