paddle 2.8 → 2.10

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: 688edb526349f04a5e5b255f6ca8620388e18f431d152501689b73eee572efaf
4
- data.tar.gz: 2ce860d28169ed75275c97043c1cc5511460da8377b4e14283be97895f03f71a
3
+ metadata.gz: 3f3431e22b7e150074661673bb00d2f3517068bda4edb32fc934f3a564b50211
4
+ data.tar.gz: 3a05a630a0c24690ec4c9203115af40ca92bbb3cd1eb498e61507b13151659fa
5
5
  SHA512:
6
- metadata.gz: b3a2fe51d7a3d636f8f1f6cb5427863760da0c7149cc45dcc0c1901a236df86ab97f9ae233f29ddca16ef0c4dd6f08ede0bc727b93d8187f243d2d41c73125eb
7
- data.tar.gz: 3444042854883edd1ec749d501498fdb242f25f643acb0d8b3d49ef31d1168e4257d8e8c1f07c4cbfcc753a4603c783adf4d6ce0b5cb0c38f3e934848a4548bf
6
+ metadata.gz: e5f300962a282b491c414a50fd8b73698e504ad22e2873827102951f8b50a632d2524e497cc182773a04d69183b8974646664f71de27775cce9abd1a9693ddcc
7
+ data.tar.gz: 40b5fb6bc07be70da8f3d8b976155233d284f5627954571737818b1a929ad67976354ed02954cf0e3fb5a8d60cfb3b92dd0f81a4491402f822324eb1b82c619b
data/Gemfile.lock CHANGED
@@ -1,15 +1,15 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- paddle (2.8)
4
+ paddle (2.10)
5
5
  cgi
6
- faraday (~> 2.11)
6
+ faraday (>= 2.14.2, < 3)
7
7
  ostruct (~> 0.6.0)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- activesupport (8.1.1)
12
+ activesupport (8.1.3)
13
13
  base64
14
14
  bigdecimal
15
15
  concurrent-ruby (~> 1.0, >= 1.3.1)
@@ -24,21 +24,21 @@ GEM
24
24
  uri (>= 0.13.1)
25
25
  ast (2.4.3)
26
26
  base64 (0.3.0)
27
- bigdecimal (3.3.1)
27
+ bigdecimal (4.1.2)
28
28
  cgi (0.5.1)
29
- concurrent-ruby (1.3.5)
29
+ concurrent-ruby (1.3.6)
30
30
  connection_pool (3.0.2)
31
31
  dotenv (3.2.0)
32
32
  drb (2.2.3)
33
- faraday (2.14.0)
33
+ faraday (2.14.2)
34
34
  faraday-net_http (>= 2.0, < 3.5)
35
35
  json
36
36
  logger
37
37
  faraday-net_http (3.4.2)
38
38
  net-http (~> 0.5)
39
- i18n (1.14.7)
39
+ i18n (1.14.8)
40
40
  concurrent-ruby (~> 1.0)
41
- json (2.18.0)
41
+ json (2.19.7)
42
42
  language_server-protocol (3.17.0.5)
43
43
  lint_roller (1.1.0)
44
44
  logger (1.7.0)
@@ -52,11 +52,11 @@ GEM
52
52
  racc
53
53
  prism (1.6.0)
54
54
  racc (1.8.1)
55
- rack (3.2.4)
55
+ rack (3.2.6)
56
56
  rainbow (3.1.1)
57
57
  rake (13.3.1)
58
58
  regexp_parser (2.11.3)
59
- rubocop (1.81.7)
59
+ rubocop (1.82.1)
60
60
  json (~> 2.3)
61
61
  language_server-protocol (~> 3.17.0.2)
62
62
  lint_roller (~> 1.1.0)
@@ -64,7 +64,7 @@ GEM
64
64
  parser (>= 3.3.0.2)
65
65
  rainbow (>= 2.2.2, < 4.0)
66
66
  regexp_parser (>= 2.9.3, < 3.0)
67
- rubocop-ast (>= 1.47.1, < 2.0)
67
+ rubocop-ast (>= 1.48.0, < 2.0)
68
68
  ruby-progressbar (~> 1.7)
69
69
  unicode-display_width (>= 2.4.0, < 4.0)
70
70
  rubocop-ast (1.48.0)
@@ -90,7 +90,7 @@ GEM
90
90
  concurrent-ruby (~> 1.0)
91
91
  unicode-display_width (3.2.0)
92
92
  unicode-emoji (~> 4.1)
93
- unicode-emoji (4.1.0)
93
+ unicode-emoji (4.2.0)
94
94
  uri (1.1.1)
95
95
  vcr (6.3.1)
96
96
  base64
@@ -107,4 +107,4 @@ DEPENDENCIES
107
107
  vcr
108
108
 
109
109
  BUNDLED WITH
110
- 2.5.9
110
+ 4.0.3
data/README.md CHANGED
@@ -7,7 +7,7 @@ The easiest and most complete Ruby library for the Paddle APIs, both Classic and
7
7
  Add this line to your application's Gemfile:
8
8
 
9
9
  ```ruby
10
- gem "paddle", "~> 2.6"
10
+ gem "paddle", "~> 2.10"
11
11
  ```
12
12
 
13
13
  ## Billing API
@@ -33,6 +33,21 @@ Paddle.configure do |config|
33
33
  end
34
34
  ```
35
35
 
36
+ ### Connection Options
37
+
38
+ You can pass [options](https://lostisland.github.io/faraday/#/customization/connection-options) to the underlying [Faraday](https://lostisland.github.io/faraday/) connection using `connection_options`. This is useful for setting timeouts, proxies, or SSL configuration:
39
+
40
+ ```ruby
41
+ Paddle.configure do |config|
42
+ config.environment = :sandbox
43
+ config.api_key = ENV["PADDLE_API_KEY"]
44
+
45
+ config.connection_options = {
46
+ request: { timeout: 10, open_timeout: 5 }
47
+ }
48
+ end
49
+ ```
50
+
36
51
  ### Resources
37
52
 
38
53
  The gem maps as closely as we can to the Paddle API so you can easily convert API examples to gem code.
@@ -84,6 +99,7 @@ When API requests fail, the gem provides detailed error information to help you
84
99
  #### Error Structure
85
100
 
86
101
  All errors inherit from `Paddle::ErrorGenerator` and include:
102
+
87
103
  - HTTP status code
88
104
  - Error code from Paddle
89
105
  - Detailed error message
@@ -221,6 +237,37 @@ discount.update(description: "An updated description")
221
237
  Paddle::Discount.update(id: "dsc_abc123", description: "An updated description")
222
238
  ```
223
239
 
240
+ ### Discount Groups
241
+
242
+ ```ruby
243
+ # List all discount groups
244
+ # https://developer.paddle.com/api-reference/discount-groups/list-discount-groups
245
+ Paddle::DiscountGroup.list
246
+ Paddle::DiscountGroup.list(status: "active")
247
+
248
+ # Create a discount group
249
+ # https://developer.paddle.com/api-reference/discount-groups/create-discount-group
250
+ Paddle::DiscountGroup.create(name: "Black Friday Promotion")
251
+
252
+ # Retrieve a discount group
253
+ # https://developer.paddle.com/api-reference/discount-groups/get-discount-group
254
+ discount_group = Paddle::DiscountGroup.retrieve(id: "dsg_abc123")
255
+
256
+ # Update a discount group
257
+ # https://developer.paddle.com/api-reference/discount-groups/update-discount-group
258
+ discount_group.update(name: "Updated name")
259
+ # or
260
+ Paddle::DiscountGroup.update(id: "dsg_abc123", name: "Updated name")
261
+
262
+ # Create a discount in a discount group
263
+ discount_group.create_discount(description: "$10 off", type: "flat", amount: "1000", currency_code: "USD")
264
+ # or
265
+ Paddle::Discount.create(discount_group_id: discount_group.id, description: "$10 off", type: "flat", amount: "1000", currency_code: "USD")
266
+
267
+ # List discounts in a discount group
268
+ discounts = discount_group.discounts
269
+ ```
270
+
224
271
  ### Customers
225
272
 
226
273
  ```ruby
@@ -401,7 +448,6 @@ Paddle::PortalSession.create customer: "ctm_abc123"
401
448
  Paddle::PortalSession.create customer: "ctm_abc123", subscription_ids: ["sub_abc123"]
402
449
  ```
403
450
 
404
-
405
451
  ### Adjustments
406
452
 
407
453
  ```ruby
@@ -551,7 +597,7 @@ Paddle::Report.create(
551
597
 
552
598
  ### Webhook Simulation Types
553
599
 
554
- Retrieves a list of Simulation Types - https://developer.paddle.com/api-reference/simulation-types/overview
600
+ Retrieves a list of Simulation Types - <https://developer.paddle.com/api-reference/simulation-types/overview>
555
601
 
556
602
  ```ruby
557
603
  Paddle::SimulationType.list
@@ -616,7 +662,6 @@ Paddle::ClientToken.retrieve id: "ctkn_abc123"
616
662
  Paddle::ClientToken.update id: "ctkn_abc123", status: "revoked"
617
663
  ```
618
664
 
619
-
620
665
  ## Classic API
621
666
 
622
667
  For accessing the Paddle Classic API
@@ -674,7 +719,7 @@ or [here for sandbox](https://sandbox-vendors.paddle.com/authentication)
674
719
 
675
720
  ## Contributing
676
721
 
677
- Bug reports and pull requests are welcome on GitHub at https://github.com/deanpcmad/paddle.
722
+ Bug reports and pull requests are welcome on GitHub at <https://github.com/deanpcmad/paddle>.
678
723
 
679
724
  ## License
680
725
 
@@ -74,7 +74,7 @@ module Paddle
74
74
  "User-Agent" => "paddle/v#{VERSION} (github.com/deanpcmad/paddle)"
75
75
  }
76
76
 
77
- conn.request :json
77
+ conn.request :url_encoded
78
78
 
79
79
  conn.response :json, content_type: "application/json"
80
80
 
data/lib/paddle/client.rb CHANGED
@@ -26,7 +26,7 @@ module Paddle
26
26
  private
27
27
 
28
28
  def create_connection
29
- Faraday.new(Paddle.config.url) do |conn|
29
+ Faraday.new(Paddle.config.url, Paddle.config.connection_options) do |conn|
30
30
  conn.request :authorization, :Bearer, Paddle.config.api_key
31
31
  conn.headers = default_headers
32
32
  conn.request :json
@@ -6,10 +6,12 @@ module Paddle
6
6
 
7
7
  attr_accessor :version
8
8
  attr_accessor :api_key
9
+ attr_accessor :connection_options
9
10
 
10
11
  def initialize
11
12
  @environment ||= :production
12
13
  @version ||= 1
14
+ @connection_options = {}
13
15
  end
14
16
 
15
17
  def environment=(env)
@@ -0,0 +1,34 @@
1
+ module Paddle
2
+ class DiscountGroup < Object
3
+ class << self
4
+ def list(**params)
5
+ response = Client.get_request("discount-groups", params: params)
6
+ Collection.from_response(response, type: DiscountGroup)
7
+ end
8
+
9
+ def create(name:, **params)
10
+ attrs = { name: name }
11
+ response = Client.post_request("discount-groups", body: attrs.merge(params))
12
+ DiscountGroup.new(response.body["data"])
13
+ end
14
+
15
+ def retrieve(id:)
16
+ response = Client.get_request("discount-groups/#{id}")
17
+ DiscountGroup.new(response.body["data"])
18
+ end
19
+
20
+ def update(id:, **params)
21
+ response = Client.patch_request("discount-groups/#{id}", body: params)
22
+ DiscountGroup.new(response.body["data"])
23
+ end
24
+ end
25
+
26
+ def create_discount(**params)
27
+ Discount.create(discount_group_id: id, **params)
28
+ end
29
+
30
+ def discounts(**params)
31
+ Discount.list(discount_group_id: id, **params)
32
+ end
33
+ end
34
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Paddle
4
- VERSION = "2.8"
4
+ VERSION = "2.10"
5
5
  end
data/lib/paddle.rb CHANGED
@@ -32,6 +32,7 @@ module Paddle
32
32
  autoload :Price, "paddle/models/price"
33
33
  autoload :PricingPreview, "paddle/models/pricing_preview"
34
34
  autoload :Discount, "paddle/models/discount"
35
+ autoload :DiscountGroup, "paddle/models/discount_group"
35
36
  autoload :Customer, "paddle/models/customer"
36
37
  autoload :Address, "paddle/models/address"
37
38
  autoload :Business, "paddle/models/business"
data/mise.toml ADDED
@@ -0,0 +1,2 @@
1
+ [tools]
2
+ ruby = "4.0"
data/paddle.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
 
11
11
  spec.summary = "Ruby library for the Paddle Billing & Classic APIs"
12
12
  spec.homepage = "https://github.com/deanpcmad/paddle"
13
- spec.required_ruby_version = ">= 2.6.0"
13
+ spec.required_ruby_version = ">= 3.2.0"
14
14
 
15
15
  spec.metadata["homepage_uri"] = spec.homepage
16
16
  spec.metadata["source_code_uri"] = "https://github.com/deanpcmad/paddle"
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
27
27
  spec.require_paths = [ "lib" ]
28
28
 
29
- spec.add_dependency "faraday", "~> 2.11"
29
+ spec.add_dependency "faraday", ">= 2.14.2", "< 3"
30
30
  spec.add_dependency "ostruct", "~> 0.6.0"
31
31
  spec.add_dependency "cgi"
32
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paddle
3
3
  version: !ruby/object:Gem::Version
4
- version: '2.8'
4
+ version: '2.10'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dean Perry
@@ -13,16 +13,22 @@ dependencies:
13
13
  name: faraday
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
- - - "~>"
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: 2.14.2
19
+ - - "<"
17
20
  - !ruby/object:Gem::Version
18
- version: '2.11'
21
+ version: '3'
19
22
  type: :runtime
20
23
  prerelease: false
21
24
  version_requirements: !ruby/object:Gem::Requirement
22
25
  requirements:
23
- - - "~>"
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: 2.14.2
29
+ - - "<"
24
30
  - !ruby/object:Gem::Version
25
- version: '2.11'
31
+ version: '3'
26
32
  - !ruby/object:Gem::Dependency
27
33
  name: ostruct
28
34
  requirement: !ruby/object:Gem::Requirement
@@ -106,6 +112,7 @@ files:
106
112
  - lib/paddle/models/customer.rb
107
113
  - lib/paddle/models/customer_auth_token.rb
108
114
  - lib/paddle/models/discount.rb
115
+ - lib/paddle/models/discount_group.rb
109
116
  - lib/paddle/models/event.rb
110
117
  - lib/paddle/models/event_type.rb
111
118
  - lib/paddle/models/notification.rb
@@ -125,6 +132,7 @@ files:
125
132
  - lib/paddle/models/transaction.rb
126
133
  - lib/paddle/object.rb
127
134
  - lib/paddle/version.rb
135
+ - mise.toml
128
136
  - paddle.gemspec
129
137
  homepage: https://github.com/deanpcmad/paddle
130
138
  licenses: []
@@ -138,14 +146,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
138
146
  requirements:
139
147
  - - ">="
140
148
  - !ruby/object:Gem::Version
141
- version: 2.6.0
149
+ version: 3.2.0
142
150
  required_rubygems_version: !ruby/object:Gem::Requirement
143
151
  requirements:
144
152
  - - ">="
145
153
  - !ruby/object:Gem::Version
146
154
  version: '0'
147
155
  requirements: []
148
- rubygems_version: 4.0.1
156
+ rubygems_version: 4.0.10
149
157
  specification_version: 4
150
158
  summary: Ruby library for the Paddle Billing & Classic APIs
151
159
  test_files: []