recurly 3.0.0.beta.5 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. checksums.yaml +5 -5
  2. data/.bumpversion.cfg +12 -0
  3. data/.travis.yml +2 -2
  4. data/.yardopts +3 -0
  5. data/CONTRIBUTING.md +102 -0
  6. data/GETTING_STARTED.md +266 -0
  7. data/README.md +12 -194
  8. data/benchmark.rb +16 -0
  9. data/lib/recurly.rb +4 -7
  10. data/lib/recurly/client.rb +60 -60
  11. data/lib/recurly/client/operations.rb +498 -340
  12. data/lib/recurly/errors.rb +4 -0
  13. data/lib/recurly/http.rb +43 -0
  14. data/lib/recurly/pager.rb +4 -10
  15. data/lib/recurly/request.rb +6 -6
  16. data/lib/recurly/requests.rb +8 -0
  17. data/lib/recurly/requests/account_acquisition_updatable.rb +2 -2
  18. data/lib/recurly/requests/billing_info_create.rb +4 -0
  19. data/lib/recurly/requests/custom_field.rb +18 -0
  20. data/lib/recurly/requests/invoice_create.rb +0 -4
  21. data/lib/recurly/requests/invoice_refund.rb +2 -2
  22. data/lib/recurly/requests/line_item_create.rb +4 -0
  23. data/lib/recurly/requests/purchase_create.rb +3 -7
  24. data/lib/recurly/requests/shipping_fee_create.rb +22 -0
  25. data/lib/recurly/requests/shipping_purchase.rb +22 -0
  26. data/lib/recurly/requests/subscription_add_on_create.rb +2 -6
  27. data/lib/recurly/requests/subscription_add_on_update.rb +26 -0
  28. data/lib/recurly/requests/subscription_change_create.rb +7 -3
  29. data/lib/recurly/requests/subscription_change_shipping_create.rb +22 -0
  30. data/lib/recurly/requests/subscription_create.rb +4 -8
  31. data/lib/recurly/requests/subscription_shipping_create.rb +30 -0
  32. data/lib/recurly/requests/subscription_shipping_update.rb +22 -0
  33. data/lib/recurly/requests/subscription_update.rb +3 -7
  34. data/lib/recurly/resource.rb +14 -1
  35. data/lib/recurly/resources.rb +17 -0
  36. data/lib/recurly/resources/account_acquisition.rb +2 -2
  37. data/lib/recurly/resources/add_on.rb +1 -1
  38. data/lib/recurly/resources/billing_info.rb +6 -6
  39. data/lib/recurly/resources/coupon.rb +1 -1
  40. data/lib/recurly/resources/coupon_discount.rb +2 -2
  41. data/lib/recurly/resources/coupon_redemption.rb +2 -2
  42. data/lib/recurly/resources/coupon_redemption_mini.rb +2 -2
  43. data/lib/recurly/resources/error_may_have_transaction.rb +2 -2
  44. data/lib/recurly/resources/invoice.rb +4 -0
  45. data/lib/recurly/resources/line_item.rb +1 -1
  46. data/lib/recurly/resources/{billing_info_payment_method.rb → payment_method.rb} +18 -2
  47. data/lib/recurly/resources/plan.rb +1 -1
  48. data/lib/recurly/resources/shipping_method.rb +42 -0
  49. data/lib/recurly/resources/shipping_method_mini.rb +26 -0
  50. data/lib/recurly/resources/subscription.rb +3 -3
  51. data/lib/recurly/resources/subscription_change.rb +4 -0
  52. data/lib/recurly/resources/subscription_shipping.rb +26 -0
  53. data/lib/recurly/resources/transaction.rb +4 -4
  54. data/lib/recurly/resources/transaction_error.rb +30 -0
  55. data/lib/recurly/schema.rb +85 -49
  56. data/lib/recurly/schema/json_parser.rb +16 -8
  57. data/lib/recurly/schema/request_caster.rb +10 -16
  58. data/lib/recurly/schema/resource_caster.rb +48 -0
  59. data/lib/recurly/schema/schema_factory.rb +0 -2
  60. data/lib/recurly/schema/schema_validator.rb +11 -14
  61. data/lib/recurly/version.rb +1 -1
  62. data/recurly.gemspec +6 -6
  63. data/scripts/build +1 -0
  64. data/scripts/bump +4 -0
  65. data/scripts/format +2 -0
  66. data/scripts/release +11 -0
  67. data/scripts/test +1 -0
  68. metadata +38 -20
  69. data/.ruby-version +0 -1
  70. data/lib/recurly/resources/transaction_payment_method.rb +0 -34
  71. data/lib/recurly/schema/json_deserializer.rb +0 -56
@@ -1,8 +1,9 @@
1
1
  require "json"
2
2
 
3
3
  module Recurly
4
- # This is a wrapper class to help parse responses into Recurly objects.
4
+ # This is a wrapper class to help parse http response into Recurly objects.
5
5
  class JSONParser
6
+
6
7
  # Parses the json body into a recurly object.
7
8
  #
8
9
  # @param client [Client] The Recurly client which made the request.
@@ -17,13 +18,18 @@ module Recurly
17
18
 
18
19
  # Converts the parsed JSON into a Recurly object.
19
20
  #
21
+ # *TODO*: Instead of inferring this type from the `object`
22
+ # attribute. We should instead "register" the response type
23
+ # in the client/operations code. The `get`, `post`, etc methods
24
+ # could explicitly state their response types.
25
+ #
20
26
  # @param data [Hash] The parsed JSON data
21
27
  # @return [Error,Resource]
22
28
  def self.from_json(data)
23
29
  type = if data.has_key?("error")
24
30
  "error"
25
31
  else
26
- data.delete("object")
32
+ data["object"]
27
33
  end
28
34
  klazz = self.recurly_class(type)
29
35
 
@@ -33,15 +39,14 @@ module Recurly
33
39
 
34
40
  data = data["error"] if klazz == Resources::Error
35
41
 
36
- klazz.from_json(data)
42
+ klazz.cast(data)
37
43
  end
38
44
 
39
45
  # Returns the Recurly ruby class responsible for the Recurly json key.
40
- # TODO figure out how we should handle nil types
41
46
  #
42
47
  # @example
43
48
  # JSONParser.recurly_class('list')
44
- # #=> Recurly::Pager
49
+ # #=> Recurly::Page
45
50
  # @example
46
51
  # JSONParser.recurly_class('shipping_address')
47
52
  # #=> Recurly::Resources::ShippingAddress
@@ -53,7 +58,7 @@ module Recurly
53
58
  when nil
54
59
  nil
55
60
  when "list"
56
- Pager
61
+ Resources::Page
57
62
  else
58
63
  type_camelized = type.split("_").map(&:capitalize).join
59
64
  if Resources.const_defined?(type_camelized)
@@ -61,8 +66,11 @@ module Recurly
61
66
  if klazz.ancestors.include?(Resource)
62
67
  klazz
63
68
  else
64
- # TODO might want to throw an error?
65
- nil
69
+ if Recurly::STRICT_MODE
70
+ raise ArgumentError, "Could not find Recurly Resource responsible for key #{type}"
71
+ else
72
+ nil
73
+ end
66
74
  end
67
75
  end
68
76
  end
@@ -2,19 +2,20 @@ require "date"
2
2
 
3
3
  module Recurly
4
4
  class Schema
5
- # *Note*: This class is for internal use.
5
+ # *Note*: This module is for internal use.
6
6
  # The RequestCaster turns mixed data into a pure Hash
7
7
  # so it can be serialized into JSON and used as the body of a request.
8
8
  # This module is to be extended by the Request class.
9
9
  module RequestCaster
10
+
10
11
  # This method casts the data object (of mixed types) into a Hash ready for JSON
11
12
  # serialization. The *schema* will default to the self's schema.
12
13
  # You should pass in the schema where possible. This is because objects are serialized
13
14
  # differently depending on the context in which they are being written.
14
15
  #
15
16
  # @example
16
- # Recurly::Requests::AccountUpdatable.cast(account_code: 'benjamin')
17
- # #=> {:account_code=>"benjamin"}
17
+ # Recurly::Requests::AccountUpdatable.cast(code: 'benjamin')
18
+ # #=> {:code=>"benjamin"}
18
19
  # @example
19
20
  # # If you have some mixed data, like passing in an Address, it should cast that
20
21
  # # address into a Hash based on the Schema defined in AccountUpdatable
@@ -25,26 +26,26 @@ module Recurly
25
26
  # @param data [Hash,Resource,Request] The data to transform into a JSON Hash.
26
27
  # @param schema [Schema] The schema to use to transform the data into a JSON Hash.
27
28
  # @return [Hash] The pure Hash ready to be serialized into JSON.
28
- def cast(data, schema = self.schema)
29
+ def cast_request(data, schema = self.schema)
29
30
  casted = {}
30
31
  if data.is_a?(Resource) || data.is_a?(Request)
31
- data = as_json(data, schema)
32
+ data = data.attributes.reject { |_k, v| v.nil? }
32
33
  end
33
34
 
34
35
  data.each do |k, v|
35
36
  schema_attr = schema.get_attribute(k)
36
37
  norm_val = if v.respond_to?(:attributes)
37
- cast(v, schema_attr.recurly_class.schema)
38
+ cast_request(v, v.class.schema)
38
39
  elsif v.is_a?(Array)
39
40
  v.map do |elem|
40
41
  if elem.respond_to?(:attributes)
41
- cast(elem, schema_attr.recurly_class.schema)
42
+ cast_request(elem, elem.class.schema)
42
43
  else
43
44
  elem
44
45
  end
45
46
  end
46
- elsif v.is_a?(Hash) && schema_attr && schema_attr.type.is_a?(Symbol)
47
- cast(v, schema_attr.recurly_class.schema)
47
+ elsif v.is_a?(Hash) && schema_attr && schema_attr.is_a?(Schema::ResourceAttribute)
48
+ cast_request(v, schema_attr.recurly_class.schema)
48
49
  else
49
50
  v
50
51
  end
@@ -54,13 +55,6 @@ module Recurly
54
55
 
55
56
  casted
56
57
  end
57
-
58
- private
59
-
60
- def as_json(resource, schema)
61
- writeable_attributes = schema.attributes.reject(&:read_only?).map(&:name)
62
- resource.attributes.select { |k, _| writeable_attributes.include?(k) }
63
- end
64
58
  end
65
59
  end
66
60
  end
@@ -0,0 +1,48 @@
1
+ require "date"
2
+
3
+ module Recurly
4
+ class Schema
5
+ # The purpose of this class is to turn JSON parsed Hashes
6
+ # defined into Recurly ruby objects. It's to be used
7
+ # by the Resource as an extension.
8
+ module ResourceCaster
9
+
10
+ # Gives the class the ability to initialize itself
11
+ # given some json data.
12
+ #
13
+ # @example
14
+ # Recurly::Resources::Account.cast({"code" => "mycode"})
15
+ # #=> #<Recurly::Resources::Account @attributes={:code=>"mycode"}>
16
+ #
17
+ # @param attributes [Hash] A primitive Hash from JSON.parse of Recurly response.
18
+ # @return [Resource] the {Resource} (ruby object) representing the passed in JSON data.
19
+ def cast(attributes = {})
20
+ resource = new()
21
+ attributes.each do |attr_name, val|
22
+ next if attr_name == "object"
23
+
24
+ schema_attr = self.schema.get_attribute(attr_name)
25
+
26
+ if schema_attr
27
+ val = if val.nil?
28
+ val
29
+ elsif schema_attr.is_valid?(val)
30
+ schema_attr.cast(val)
31
+ else
32
+ if Recurly::STRICT_MODE
33
+ msg = "#{self.class}##{attr_name} does not have the right type. Value: #{val.inspect} was expected to be a #{schema_attr}"
34
+ raise ArgumentError, msg
35
+ end
36
+ end
37
+
38
+ writer = "#{attr_name}="
39
+ resource.send(writer, val)
40
+ elsif Recurly::STRICT_MODE
41
+ raise ArgumentError, "#{resource.class.name} encountered json attribute #{attr_name.inspect}: #{val.inspect} but it's unknown to it's schema"
42
+ end
43
+ end
44
+ resource
45
+ end
46
+ end
47
+ end
48
+ end
@@ -41,8 +41,6 @@ module Recurly
41
41
  self.attributes[name] = val
42
42
  end
43
43
 
44
- protected "#{name}=" if attribute.read_only?
45
-
46
44
  self
47
45
  end
48
46
  end
@@ -24,45 +24,42 @@ module Recurly
24
24
  err_msg = "Attribute '#{attr_name}' does not exist on request #{self.class.name}."
25
25
  if did_you_mean = get_did_you_mean(schema, attr_name)
26
26
  err_msg << " Did you mean '#{did_you_mean}'?"
27
- raise ArgumentError, err_msg
28
27
  end
29
- elsif schema_attr.read_only?
30
- raise ArgumentError, "Attribute '#{attr_name}' on resource #{self.class.name} is not writeable"
28
+ raise ArgumentError, err_msg
31
29
  else
32
- validate_attribute!(schema_attr, val)
30
+ validate_attribute!(attr_name, schema_attr, val)
33
31
  end
34
32
  end
35
33
  end
36
34
 
37
35
  # Validates an individual attribute
38
- def validate_attribute!(schema_attr, val)
39
- unless schema_attr.type.is_a?(Symbol) || val.is_a?(schema_attr.type)
36
+ def validate_attribute!(name, schema_attr, val)
37
+ unless schema_attr.is_valid?(val)
40
38
  # If it's safely castable, the json deserializer or server
41
39
  # will take care of it for us
42
40
  unless safely_castable?(val.class, schema_attr.type)
43
- expected = case schema_attr.type
44
- when Array
45
- "Array of #{schema_attr.type.item_type}s"
41
+ expected = case schema_attr
42
+ when Schema::ArrayAttribute
43
+ "Array of #{schema_attr.type}s"
46
44
  else
47
45
  schema_attr.type
48
46
  end
49
47
 
50
- raise ArgumentError, "Attribute '#{schema_attr.name}' on the resource #{self.class.name} is type #{val.class} but should be a #{expected}"
48
+ raise ArgumentError, "Attribute '#{name}' on the resource #{self.class.name} is type #{val.class} but should be a #{expected}"
51
49
  end
52
50
  end
53
51
 
54
52
  # This is the convention for a recurly object
55
- if schema_attr.type.is_a?(Symbol) && val.is_a?(Hash)
56
- klazz = Schema.get_recurly_class(schema_attr.type)
53
+ if schema_attr.is_a?(Schema::ResourceAttribute) && val.is_a?(Hash)
57
54
  # Using send because the initializer may be private
58
- instance = klazz.send(:new, val)
55
+ instance = schema_attr.recurly_class.send(:new, val)
59
56
  instance.validate!
60
57
  end
61
58
  end
62
59
 
63
60
  # Gets the closest term to the misspelled attribute
64
61
  def get_did_you_mean(schema, misspelled_attr)
65
- closest = schema.attributes.map(&:name).sort_by do |v|
62
+ closest = schema.attributes.keys.sort_by do |v|
66
63
  levenshtein_distance(v, misspelled_attr)
67
64
  end.first
68
65
 
@@ -1,3 +1,3 @@
1
1
  module Recurly
2
- VERSION = "3.0.0.beta.5"
2
+ VERSION = "3.0.0"
3
3
  end
@@ -7,11 +7,11 @@ Gem::Specification.new do |spec|
7
7
  spec.name = "recurly"
8
8
  spec.version = Recurly::VERSION
9
9
  spec.authors = ["Recurly"]
10
- spec.email = ["support@recurly.com"]
10
+ spec.email = ["dx@recurly.com"]
11
11
 
12
- spec.summary = "The ruby client for Recurly's Partner API"
13
- spec.description = "The ruby client for Recurly's Partner API"
14
- spec.homepage = "https://partner-docs.recurly.com"
12
+ spec.summary = "The ruby client for Recurly's V3 API"
13
+ spec.description = "The ruby client for Recurly's V3 API"
14
+ spec.homepage = "https://github.com/recurly/recurly-client-ruby"
15
15
  spec.license = "MIT"
16
16
 
17
17
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
@@ -21,10 +21,10 @@ Gem::Specification.new do |spec|
21
21
  # spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ["lib"]
23
23
 
24
- spec.add_dependency "faraday", ">= 0.8.11", "<= 1.0.0"
24
+ spec.add_dependency "faraday", ">= 0.8.11", "< 0.16"
25
25
 
26
26
  spec.add_development_dependency "net-http-persistent", "~> 2.9.4"
27
- spec.add_development_dependency "bundler", "~> 1.14"
27
+ spec.add_development_dependency "bundler", "~> 2.0"
28
28
  spec.add_development_dependency "rake", "~> 10.0"
29
29
  spec.add_development_dependency "rspec", "~> 3.0"
30
30
  spec.add_development_dependency "yard", "~> 0.9"
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env bash
2
+ set -e
2
3
 
3
4
  bundle install --binstubs --quiet
4
5
  ./bin/yard --quiet
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env bash
2
+ set -e
3
+
4
+ bump2version "$@"
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env bash
2
+ set -e
3
+
2
4
  if [ "$1" == "--check" ]; then
3
5
  ./bin/rufo . --check
4
6
  else
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env bash
2
+ set -e
3
+
4
+ # Clean up any leftover gems
5
+ rm -f *.gem
6
+
7
+ # Build the new gem
8
+ gem build recurly.gemspec
9
+
10
+ # Push what should be the only gem present
11
+ gem push *.gem
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env bash
2
+ set -e
2
3
 
3
4
  # First check formatting
4
5
  echo "Checking style..."
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: recurly
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.beta.5
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Recurly
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-28 00:00:00.000000000 Z
11
+ date: 2019-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -17,9 +17,9 @@ dependencies:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.8.11
20
- - - "<="
20
+ - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: 1.0.0
22
+ version: '0.16'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -27,9 +27,9 @@ dependencies:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
29
  version: 0.8.11
30
- - - "<="
30
+ - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: 1.0.0
32
+ version: '0.16'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: net-http-persistent
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -50,14 +50,14 @@ dependencies:
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '1.14'
53
+ version: '2.0'
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '1.14'
60
+ version: '2.0'
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: rake
63
63
  requirement: !ruby/object:Gem::Requirement
@@ -142,21 +142,25 @@ dependencies:
142
142
  - - "~>"
143
143
  - !ruby/object:Gem::Version
144
144
  version: '0.7'
145
- description: The ruby client for Recurly's Partner API
145
+ description: The ruby client for Recurly's V3 API
146
146
  email:
147
- - support@recurly.com
147
+ - dx@recurly.com
148
148
  executables: []
149
149
  extensions: []
150
150
  extra_rdoc_files: []
151
151
  files:
152
+ - ".bumpversion.cfg"
152
153
  - ".gitignore"
153
154
  - ".rspec"
154
- - ".ruby-version"
155
155
  - ".travis.yml"
156
+ - ".yardopts"
157
+ - CONTRIBUTING.md
158
+ - GETTING_STARTED.md
156
159
  - Gemfile
157
160
  - LICENSE.txt
158
161
  - README.md
159
162
  - Rakefile
163
+ - benchmark.rb
160
164
  - lib/data/ca-certificates.crt
161
165
  - lib/recurly.rb
162
166
  - lib/recurly/client.rb
@@ -165,8 +169,10 @@ files:
165
169
  - lib/recurly/errors.rb
166
170
  - lib/recurly/errors/api_errors.rb
167
171
  - lib/recurly/errors/network_errors.rb
172
+ - lib/recurly/http.rb
168
173
  - lib/recurly/pager.rb
169
174
  - lib/recurly/request.rb
175
+ - lib/recurly/requests.rb
170
176
  - lib/recurly/requests/account_acquisition_cost.rb
171
177
  - lib/recurly/requests/account_acquisition_updatable.rb
172
178
  - lib/recurly/requests/account_create.rb
@@ -182,6 +188,7 @@ files:
182
188
  - lib/recurly/requests/coupon_pricing.rb
183
189
  - lib/recurly/requests/coupon_redemption_create.rb
184
190
  - lib/recurly/requests/coupon_update.rb
191
+ - lib/recurly/requests/custom_field.rb
185
192
  - lib/recurly/requests/external_refund.rb
186
193
  - lib/recurly/requests/invoice_address.rb
187
194
  - lib/recurly/requests/invoice_create.rb
@@ -196,14 +203,21 @@ files:
196
203
  - lib/recurly/requests/purchase_create.rb
197
204
  - lib/recurly/requests/shipping_address_create.rb
198
205
  - lib/recurly/requests/shipping_address_update.rb
206
+ - lib/recurly/requests/shipping_fee_create.rb
207
+ - lib/recurly/requests/shipping_purchase.rb
199
208
  - lib/recurly/requests/subscription_add_on_create.rb
209
+ - lib/recurly/requests/subscription_add_on_update.rb
200
210
  - lib/recurly/requests/subscription_change_create.rb
211
+ - lib/recurly/requests/subscription_change_shipping_create.rb
201
212
  - lib/recurly/requests/subscription_create.rb
202
213
  - lib/recurly/requests/subscription_pause.rb
203
214
  - lib/recurly/requests/subscription_purchase.rb
215
+ - lib/recurly/requests/subscription_shipping_create.rb
204
216
  - lib/recurly/requests/subscription_shipping_purchase.rb
217
+ - lib/recurly/requests/subscription_shipping_update.rb
205
218
  - lib/recurly/requests/subscription_update.rb
206
219
  - lib/recurly/resource.rb
220
+ - lib/recurly/resources.rb
207
221
  - lib/recurly/resources/account.rb
208
222
  - lib/recurly/resources/account_acquisition.rb
209
223
  - lib/recurly/resources/account_acquisition_cost.rb
@@ -216,7 +230,6 @@ files:
216
230
  - lib/recurly/resources/add_on_pricing.rb
217
231
  - lib/recurly/resources/address.rb
218
232
  - lib/recurly/resources/billing_info.rb
219
- - lib/recurly/resources/billing_info_payment_method.rb
220
233
  - lib/recurly/resources/billing_info_updated_by.rb
221
234
  - lib/recurly/resources/coupon.rb
222
235
  - lib/recurly/resources/coupon_discount.rb
@@ -237,35 +250,41 @@ files:
237
250
  - lib/recurly/resources/invoice_mini.rb
238
251
  - lib/recurly/resources/line_item.rb
239
252
  - lib/recurly/resources/line_item_list.rb
253
+ - lib/recurly/resources/payment_method.rb
240
254
  - lib/recurly/resources/plan.rb
241
255
  - lib/recurly/resources/plan_hosted_pages.rb
242
256
  - lib/recurly/resources/plan_mini.rb
243
257
  - lib/recurly/resources/plan_pricing.rb
244
258
  - lib/recurly/resources/settings.rb
245
259
  - lib/recurly/resources/shipping_address.rb
260
+ - lib/recurly/resources/shipping_method.rb
261
+ - lib/recurly/resources/shipping_method_mini.rb
246
262
  - lib/recurly/resources/site.rb
247
263
  - lib/recurly/resources/subscription.rb
248
264
  - lib/recurly/resources/subscription_add_on.rb
249
265
  - lib/recurly/resources/subscription_change.rb
266
+ - lib/recurly/resources/subscription_shipping.rb
250
267
  - lib/recurly/resources/tax_info.rb
251
268
  - lib/recurly/resources/transaction.rb
269
+ - lib/recurly/resources/transaction_error.rb
252
270
  - lib/recurly/resources/transaction_payment_gateway.rb
253
- - lib/recurly/resources/transaction_payment_method.rb
254
271
  - lib/recurly/resources/unique_coupon_code.rb
255
272
  - lib/recurly/resources/user.rb
256
273
  - lib/recurly/schema.rb
257
- - lib/recurly/schema/json_deserializer.rb
258
274
  - lib/recurly/schema/json_parser.rb
259
275
  - lib/recurly/schema/request_caster.rb
276
+ - lib/recurly/schema/resource_caster.rb
260
277
  - lib/recurly/schema/schema_factory.rb
261
278
  - lib/recurly/schema/schema_validator.rb
262
279
  - lib/recurly/version.rb
263
280
  - recurly.gemspec
264
281
  - scripts/build
282
+ - scripts/bump
265
283
  - scripts/clean
266
284
  - scripts/format
285
+ - scripts/release
267
286
  - scripts/test
268
- homepage: https://partner-docs.recurly.com
287
+ homepage: https://github.com/recurly/recurly-client-ruby
269
288
  licenses:
270
289
  - MIT
271
290
  metadata: {}
@@ -280,13 +299,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
280
299
  version: '0'
281
300
  required_rubygems_version: !ruby/object:Gem::Requirement
282
301
  requirements:
283
- - - ">"
302
+ - - ">="
284
303
  - !ruby/object:Gem::Version
285
- version: 1.3.1
304
+ version: '0'
286
305
  requirements: []
287
- rubyforge_project:
288
- rubygems_version: 2.6.14.3
306
+ rubygems_version: 3.0.6
289
307
  signing_key:
290
308
  specification_version: 4
291
- summary: The ruby client for Recurly's Partner API
309
+ summary: The ruby client for Recurly's V3 API
292
310
  test_files: []