dodopayments 1.14.0 → 1.16.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 302b2bf6170d705f608f0f5920a8d7faa4f56b8ca4fba0527d28b405d00fa21b
4
- data.tar.gz: fb1ccc49ff0df46c0fc51367b45c393e560e04c040eba513f48ce225344b0572
3
+ metadata.gz: 4412aafd8f47732a2f61ea33c4b6a29422536d903dcbb5c11eec1cf8b2af528d
4
+ data.tar.gz: 4fa6a909d5e0000db80a5de978f471f1ac5a85708d711cdc65ec90249b203fce
5
5
  SHA512:
6
- metadata.gz: 697a86c5196aa3312109a7ed5650313437ac5db4be1ce2b2f7d9845baae2915d8fe150e37e4410657dd70a5568c4938753e9afc1a37b6c67fde45ec3098abcb0
7
- data.tar.gz: 2a87db33ef9b75ca61352795acf6b8f9e88f6c8e3281beaa744bcd3bdcdbbf03b401aa2c5cadf325d5dd6ac5ac2fa0dd0321baaeb3e2bffeb20f6477794626f0
6
+ metadata.gz: 30d7a6062eacf0b4e55439a23be00ad373f1c9bc7728fae66220585691f7eba62adf676f90301d44f6469a25dcc20690fca7fe56832f058c64b5e09d6d7a719c
7
+ data.tar.gz: 8d55446d2edc906fbdb18fad0e5122143e9180a13d1aa34e060b4e96b470dc4c82bb265fe439cbe91e8e2686eb579aca601381904e262b6a0bb7943b3a490990
data/.ignore ADDED
@@ -0,0 +1,2 @@
1
+ rbi/*
2
+ sig/*
data/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.16.1 (2025-04-18)
4
+
5
+ Full Changelog: [v1.14.0...v1.16.1](https://github.com/dodopayments/dodopayments-ruby/compare/v1.14.0...v1.16.1)
6
+
7
+ ### Features
8
+
9
+ * **api:** manual updates ([e2b23a9](https://github.com/dodopayments/dodopayments-ruby/commit/e2b23a9dd83f0c56039c71b49f23bccec9e1def6))
10
+
11
+
12
+ ### Bug Fixes
13
+
14
+ * always send idempotency header when specified as a request option ([e666622](https://github.com/dodopayments/dodopayments-ruby/commit/e66662216d369a0553fe05943400645244270cbc))
15
+ * **client:** send correct HTTP path ([45d2036](https://github.com/dodopayments/dodopayments-ruby/commit/45d20360d35db21f868479dbb2186fdd2c09dfe3))
16
+ * restore ability to configure server environment as string during client construction ([684c1e2](https://github.com/dodopayments/dodopayments-ruby/commit/684c1e244a77b8af62ba1b47d9dd9511aa42be6c))
17
+
18
+
19
+ ### Chores
20
+
21
+ * **internal:** contribute.md and contributor QoL improvements ([360a982](https://github.com/dodopayments/dodopayments-ruby/commit/360a982c582c253c26ecb4038c75d204e8afdd01))
22
+ * refine `#inspect` and `#to_s` for model classes ([04244f9](https://github.com/dodopayments/dodopayments-ruby/commit/04244f9a079f650ab56b712cc4087c313cd52278))
23
+
3
24
  ## 1.14.0 (2025-04-17)
4
25
 
5
26
  Full Changelog: [v0.0.1-alpha.0...v1.14.0](https://github.com/dodopayments/dodopayments-ruby/compare/v0.0.1-alpha.0...v1.14.0)
data/README.md CHANGED
@@ -17,7 +17,7 @@ To use this gem, install via Bundler by adding the following to your application
17
17
  <!-- x-release-please-start-version -->
18
18
 
19
19
  ```ruby
20
- gem "dodopayments", "~> 1.14.0"
20
+ gem "dodopayments", "~> 1.16.1"
21
21
  ```
22
22
 
23
23
  <!-- x-release-please-end -->
@@ -105,8 +105,9 @@ module Dodopayments
105
105
  initial_retry_delay: DEFAULT_INITIAL_RETRY_DELAY,
106
106
  max_retry_delay: DEFAULT_MAX_RETRY_DELAY
107
107
  )
108
- base_url ||= ENVIRONMENTS.fetch(environment || :production) do
109
- raise ArgumentError.new("environment must be one of #{ENVIRONMENTS.keys}, got #{environment}")
108
+ base_url ||= Dodopayments::Client::ENVIRONMENTS.fetch(environment&.to_sym || :production) do
109
+ message = "environment must be one of #{Dodopayments::Client::ENVIRONMENTS.keys}, got #{environment}"
110
+ raise ArgumentError.new(message)
110
111
  end
111
112
 
112
113
  if bearer_token.nil?
@@ -253,7 +253,7 @@ module Dodopayments
253
253
 
254
254
  if @idempotency_header &&
255
255
  !headers.key?(@idempotency_header) &&
256
- !Net::HTTP::IDEMPOTENT_METHODS_.include?(method.to_s.upcase)
256
+ (!Net::HTTP::IDEMPOTENT_METHODS_.include?(method.to_s.upcase) || opts.key?(:idempotency_key))
257
257
  headers[@idempotency_header] = opts.fetch(:idempotency_key) { generate_idempotency_key }
258
258
  end
259
259
 
@@ -57,11 +57,15 @@ module Dodopayments
57
57
  # @return [Array(Net::HTTPGenericRequest, Proc)]
58
58
  def build_request(request, &blk)
59
59
  method, url, headers, body = request.fetch_values(:method, :url, :headers, :body)
60
+
61
+ # ensure we construct a URI class of the right scheme
62
+ url = URI(url.to_s)
63
+
60
64
  req = Net::HTTPGenericRequest.new(
61
65
  method.to_s.upcase,
62
66
  !body.nil?,
63
67
  method != :head,
64
- url.to_s
68
+ url
65
69
  )
66
70
 
67
71
  headers.each { req[_1] = _2 }
@@ -341,6 +341,27 @@ module Dodopayments
341
341
  .to_h
342
342
  end
343
343
 
344
+ class << self
345
+ # @param model [Dodopayments::Internal::Type::BaseModel]
346
+ #
347
+ # @return [Hash{Symbol=>Object}]
348
+ def walk(model)
349
+ walk = ->(x) do
350
+ case x
351
+ in Dodopayments::Internal::Type::BaseModel
352
+ walk.call(x.to_h)
353
+ in Hash
354
+ x.transform_values(&walk)
355
+ in Array
356
+ x.map(&walk)
357
+ else
358
+ x
359
+ end
360
+ end
361
+ walk.call(model)
362
+ end
363
+ end
364
+
344
365
  # @param a [Object]
345
366
  #
346
367
  # @return [String]
@@ -376,13 +397,11 @@ module Dodopayments
376
397
  depth = depth.succ
377
398
  deferred = fields.transform_values do |field|
378
399
  type, required, nilable = field.fetch_values(:type, :required, :nilable)
379
- -> do
380
- [
381
- Dodopayments::Internal::Type::Converter.inspect(type, depth: depth),
382
- !required || nilable ? "nil" : nil
383
- ].compact.join(" | ")
384
- end
385
- .tap { _1.define_singleton_method(:inspect) { call } }
400
+ inspected = [
401
+ Dodopayments::Internal::Type::Converter.inspect(type, depth: depth),
402
+ !required || nilable ? "nil" : nil
403
+ ].compact.join(" | ")
404
+ -> { inspected }.tap { _1.define_singleton_method(:inspect) { call } }
386
405
  end
387
406
 
388
407
  "#{name}[#{deferred.inspect}]"
@@ -392,15 +411,12 @@ module Dodopayments
392
411
  # @api private
393
412
  #
394
413
  # @return [String]
395
- def inspect
396
- rows = @data.map do
397
- "#{_1}=#{self.class.known_fields.key?(_1) ? public_send(_1).inspect : ''}"
398
- rescue Dodopayments::Errors::ConversionError
399
- "#{_1}=#{_2.inspect}"
400
- end
414
+ def to_s = self.class.walk(@data).to_s
401
415
 
402
- "#<#{self.class}:0x#{object_id.to_s(16)} #{rows.join(' ')}>"
403
- end
416
+ # @api private
417
+ #
418
+ # @return [String]
419
+ def inspect = "#<#{self.class}:0x#{object_id.to_s(16)} #{self}>"
404
420
  end
405
421
  end
406
422
  end
@@ -144,6 +144,7 @@ module Dodopayments
144
144
  SEPA = :sepa
145
145
  ACH = :ach
146
146
  AMAZON_PAY = :amazon_pay
147
+ AFTERPAY_CLEARPAY = :afterpay_clearpay
147
148
 
148
149
  finalize!
149
150
 
@@ -166,6 +166,7 @@ module Dodopayments
166
166
  SEPA = :sepa
167
167
  ACH = :ach
168
168
  AMAZON_PAY = :amazon_pay
169
+ AFTERPAY_CLEARPAY = :afterpay_clearpay
169
170
 
170
171
  finalize!
171
172
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dodopayments
4
- VERSION = "1.14.0"
4
+ VERSION = "1.16.1"
5
5
  end
@@ -178,6 +178,13 @@ module Dodopayments
178
178
  sig { params(keys: T.nilable(T::Array[Symbol])).returns(Dodopayments::Internal::AnyHash) }
179
179
  def deconstruct_keys(keys); end
180
180
 
181
+ class << self
182
+ sig do
183
+ params(model: Dodopayments::Internal::Type::BaseModel).returns(Dodopayments::Internal::AnyHash)
184
+ end
185
+ def walk(model); end
186
+ end
187
+
181
188
  sig { params(a: T.anything).returns(String) }
182
189
  def to_json(*a); end
183
190
 
@@ -194,6 +201,10 @@ module Dodopayments
194
201
  def inspect(depth: 0); end
195
202
  end
196
203
 
204
+ # @api private
205
+ sig { returns(String) }
206
+ def to_s; end
207
+
197
208
  # @api private
198
209
  sig { returns(String) }
199
210
  def inspect; end
@@ -159,6 +159,11 @@ module Dodopayments
159
159
  ACH = T.let(:ach, Dodopayments::Models::PaymentCreateParams::AllowedPaymentMethodType::TaggedSymbol)
160
160
  AMAZON_PAY =
161
161
  T.let(:amazon_pay, Dodopayments::Models::PaymentCreateParams::AllowedPaymentMethodType::TaggedSymbol)
162
+ AFTERPAY_CLEARPAY =
163
+ T.let(
164
+ :afterpay_clearpay,
165
+ Dodopayments::Models::PaymentCreateParams::AllowedPaymentMethodType::TaggedSymbol
166
+ )
162
167
 
163
168
  sig do
164
169
  override
@@ -206,6 +206,11 @@ module Dodopayments
206
206
  ACH = T.let(:ach, Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType::TaggedSymbol)
207
207
  AMAZON_PAY =
208
208
  T.let(:amazon_pay, Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType::TaggedSymbol)
209
+ AFTERPAY_CLEARPAY =
210
+ T.let(
211
+ :afterpay_clearpay,
212
+ Dodopayments::Models::SubscriptionCreateParams::AllowedPaymentMethodType::TaggedSymbol
213
+ )
209
214
 
210
215
  sig do
211
216
  override
@@ -71,6 +71,10 @@ module Dodopayments
71
71
 
72
72
  def deconstruct_keys: (::Array[Symbol]? keys) -> ::Hash[Symbol, top]
73
73
 
74
+ def self.walk: (
75
+ Dodopayments::Internal::Type::BaseModel model
76
+ ) -> ::Hash[Symbol, top]
77
+
74
78
  def to_json: (*top a) -> String
75
79
 
76
80
  def to_yaml: (*top a) -> String
@@ -79,6 +83,8 @@ module Dodopayments
79
83
 
80
84
  def self.inspect: (?depth: Integer) -> String
81
85
 
86
+ def to_s: -> String
87
+
82
88
  def inspect: -> String
83
89
  end
84
90
  end
@@ -81,6 +81,7 @@ module Dodopayments
81
81
  | :sepa
82
82
  | :ach
83
83
  | :amazon_pay
84
+ | :afterpay_clearpay
84
85
 
85
86
  module AllowedPaymentMethodType
86
87
  extend Dodopayments::Internal::Type::Enum
@@ -102,6 +103,7 @@ module Dodopayments
102
103
  SEPA: :sepa
103
104
  ACH: :ach
104
105
  AMAZON_PAY: :amazon_pay
106
+ AFTERPAY_CLEARPAY: :afterpay_clearpay
105
107
 
106
108
  def self?.values: -> ::Array[Dodopayments::Models::PaymentCreateParams::allowed_payment_method_type]
107
109
  end
@@ -93,6 +93,7 @@ module Dodopayments
93
93
  | :sepa
94
94
  | :ach
95
95
  | :amazon_pay
96
+ | :afterpay_clearpay
96
97
 
97
98
  module AllowedPaymentMethodType
98
99
  extend Dodopayments::Internal::Type::Enum
@@ -114,6 +115,7 @@ module Dodopayments
114
115
  SEPA: :sepa
115
116
  ACH: :ach
116
117
  AMAZON_PAY: :amazon_pay
118
+ AFTERPAY_CLEARPAY: :afterpay_clearpay
117
119
 
118
120
  def self?.values: -> ::Array[Dodopayments::Models::SubscriptionCreateParams::allowed_payment_method_type]
119
121
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dodopayments
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.14.0
4
+ version: 1.16.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dodo Payments
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-04-17 00:00:00.000000000 Z
11
+ date: 2025-04-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: connection_pool
@@ -31,6 +31,7 @@ extensions: []
31
31
  extra_rdoc_files:
32
32
  - README.md
33
33
  files:
34
+ - ".ignore"
34
35
  - CHANGELOG.md
35
36
  - README.md
36
37
  - SECURITY.md