recurly 3.0.0.beta.3 → 3.0.0.beta.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. checksums.yaml +5 -5
  2. data/.ruby-version +1 -0
  3. data/.travis.yml +3 -1
  4. data/README.md +9 -2
  5. data/lib/recurly/client.rb +42 -13
  6. data/lib/recurly/client/adapter.rb +9 -18
  7. data/lib/recurly/client/operations.rb +1179 -78
  8. data/lib/recurly/errors/api_errors.rb +4 -0
  9. data/lib/recurly/errors/network_errors.rb +1 -1
  10. data/lib/recurly/pager.rb +5 -1
  11. data/lib/recurly/requests/account_acquisition_cost.rb +18 -0
  12. data/lib/recurly/requests/account_acquisition_updatable.rb +5 -1
  13. data/lib/recurly/requests/account_create.rb +23 -3
  14. data/lib/recurly/requests/account_update.rb +22 -2
  15. data/lib/recurly/requests/add_on_create.rb +7 -3
  16. data/lib/recurly/requests/add_on_pricing.rb +18 -0
  17. data/lib/recurly/requests/add_on_update.rb +7 -3
  18. data/lib/recurly/requests/address.rb +4 -0
  19. data/lib/recurly/requests/billing_info_create.rb +4 -0
  20. data/lib/recurly/requests/coupon_bulk_create.rb +4 -0
  21. data/lib/recurly/requests/coupon_create.rb +13 -9
  22. data/lib/recurly/requests/coupon_pricing.rb +18 -0
  23. data/lib/recurly/requests/coupon_redemption_create.rb +4 -0
  24. data/lib/recurly/requests/coupon_update.rb +4 -0
  25. data/lib/recurly/requests/external_refund.rb +22 -0
  26. data/lib/recurly/requests/invoice_address.rb +54 -0
  27. data/lib/recurly/requests/invoice_create.rb +6 -2
  28. data/lib/recurly/requests/invoice_refund.rb +7 -3
  29. data/lib/recurly/requests/invoice_updatable.rb +34 -0
  30. data/lib/recurly/requests/line_item_create.rb +6 -2
  31. data/lib/recurly/requests/line_item_refund.rb +4 -0
  32. data/lib/recurly/requests/plan_create.rb +11 -7
  33. data/lib/recurly/requests/plan_hosted_pages.rb +26 -0
  34. data/lib/recurly/requests/plan_pricing.rb +22 -0
  35. data/lib/recurly/requests/plan_update.rb +11 -7
  36. data/lib/recurly/requests/shipping_address_create.rb +4 -0
  37. data/lib/recurly/requests/shipping_address_update.rb +5 -1
  38. data/lib/recurly/requests/subscription_add_on_create.rb +8 -0
  39. data/lib/recurly/requests/subscription_change_create.rb +13 -5
  40. data/lib/recurly/requests/subscription_create.rb +11 -7
  41. data/lib/recurly/requests/subscription_pause.rb +4 -0
  42. data/lib/recurly/requests/subscription_update.rb +8 -4
  43. data/lib/recurly/resource.rb +6 -6
  44. data/lib/recurly/resources/account.rb +27 -11
  45. data/lib/recurly/resources/account_acquisition.rb +9 -5
  46. data/lib/recurly/resources/account_acquisition_cost.rb +18 -0
  47. data/lib/recurly/resources/account_balance.rb +7 -3
  48. data/lib/recurly/resources/account_balance_amount.rb +18 -0
  49. data/lib/recurly/resources/account_mini.rb +18 -2
  50. data/lib/recurly/resources/account_note.rb +7 -3
  51. data/lib/recurly/resources/add_on.rb +13 -9
  52. data/lib/recurly/resources/add_on_mini.rb +6 -2
  53. data/lib/recurly/resources/add_on_pricing.rb +18 -0
  54. data/lib/recurly/resources/address.rb +4 -0
  55. data/lib/recurly/resources/billing_info.rb +12 -8
  56. data/lib/recurly/resources/billing_info_payment_method.rb +34 -0
  57. data/lib/recurly/resources/billing_info_updated_by.rb +18 -0
  58. data/lib/recurly/resources/coupon.rb +21 -13
  59. data/lib/recurly/resources/coupon_discount.rb +7 -3
  60. data/lib/recurly/resources/coupon_discount_pricing.rb +18 -0
  61. data/lib/recurly/resources/coupon_discount_trial.rb +18 -0
  62. data/lib/recurly/resources/coupon_mini.rb +8 -4
  63. data/lib/recurly/resources/coupon_redemption.rb +9 -5
  64. data/lib/recurly/resources/coupon_redemption_mini.rb +8 -4
  65. data/lib/recurly/resources/credit_payment.rb +8 -4
  66. data/lib/recurly/resources/custom_field.rb +4 -0
  67. data/lib/recurly/resources/custom_field_definition.rb +11 -7
  68. data/lib/recurly/resources/error.rb +6 -2
  69. data/lib/recurly/resources/error_may_have_transaction.rb +6 -2
  70. data/lib/recurly/resources/fraud_info.rb +22 -0
  71. data/lib/recurly/resources/invoice.rb +17 -13
  72. data/lib/recurly/resources/invoice_address.rb +54 -0
  73. data/lib/recurly/resources/invoice_collection.rb +5 -1
  74. data/lib/recurly/resources/invoice_mini.rb +6 -2
  75. data/lib/recurly/resources/line_item.rb +13 -5
  76. data/lib/recurly/resources/line_item_list.rb +5 -1
  77. data/lib/recurly/resources/plan.rb +16 -12
  78. data/lib/recurly/resources/plan_hosted_pages.rb +26 -0
  79. data/lib/recurly/resources/plan_mini.rb +6 -2
  80. data/lib/recurly/resources/plan_pricing.rb +22 -0
  81. data/lib/recurly/resources/settings.rb +7 -3
  82. data/lib/recurly/resources/shipping_address.rb +8 -4
  83. data/lib/recurly/resources/site.rb +16 -8
  84. data/lib/recurly/resources/subscription.rb +9 -5
  85. data/lib/recurly/resources/subscription_add_on.rb +4 -0
  86. data/lib/recurly/resources/subscription_change.rb +9 -5
  87. data/lib/recurly/resources/tax_info.rb +4 -0
  88. data/lib/recurly/resources/transaction.rb +16 -8
  89. data/lib/recurly/resources/transaction_payment_gateway.rb +26 -0
  90. data/lib/recurly/resources/transaction_payment_method.rb +34 -0
  91. data/lib/recurly/resources/unique_coupon_code.rb +10 -6
  92. data/lib/recurly/resources/user.rb +8 -4
  93. data/lib/recurly/schema/json_deserializer.rb +18 -20
  94. data/lib/recurly/schema/request_caster.rb +1 -1
  95. data/lib/recurly/schema/schema_validator.rb +31 -8
  96. data/lib/recurly/version.rb +1 -1
  97. data/recurly.gemspec +1 -1
  98. data/scripts/check-deps +28 -0
  99. data/scripts/install-deps +44 -0
  100. metadata +37 -7
@@ -1,14 +1,18 @@
1
+ # This file is automatically created by Recurly's OpenAPI generation process
2
+ # and thus any edits you make by hand will be lost. If you wish to make a
3
+ # change to this file, please create a Github issue explaining the changes you
4
+ # need and we will usher them to the appropriate places.
1
5
  module Recurly
2
6
  module Resources
3
7
  class User < Resource
4
8
 
5
9
  # @!attribute [r] created_at
6
10
  # @return [DateTime]
7
- define_attribute :created_at, DateTime, {:read_only => true}
11
+ define_attribute :created_at, DateTime, { :read_only => true }
8
12
 
9
13
  # @!attribute [r] deleted_at
10
14
  # @return [DateTime]
11
- define_attribute :deleted_at, DateTime, {:read_only => true}
15
+ define_attribute :deleted_at, DateTime, { :read_only => true }
12
16
 
13
17
  # @!attribute email
14
18
  # @return [String]
@@ -20,7 +24,7 @@ module Recurly
20
24
 
21
25
  # @!attribute [r] id
22
26
  # @return [String]
23
- define_attribute :id, String, {:read_only => true}
27
+ define_attribute :id, String, { :read_only => true }
24
28
 
25
29
  # @!attribute last_name
26
30
  # @return [String]
@@ -28,7 +32,7 @@ module Recurly
28
32
 
29
33
  # @!attribute [r] object
30
34
  # @return [String] Object type
31
- define_attribute :object, String, {:read_only => true}
35
+ define_attribute :object, String, { :read_only => true }
32
36
 
33
37
  # @!attribute time_zone
34
38
  # @return [String]
@@ -22,32 +22,30 @@ module Recurly
22
22
 
23
23
  schema_attr = self.schema.get_attribute(attr_name)
24
24
 
25
- # if the Hash val is a recurly type, parse it into a Resource
26
- val = if val.is_a?(Hash) && !schema_attr.is_primitive?
27
- schema_attr.recurly_class.from_json(val)
28
- elsif val.is_a?(Array)
29
- val.map do |e|
30
- if e.is_a?(Hash) && !schema_attr.is_primitive?
31
- schema_attr.recurly_class.from_json(e)
32
- else
33
- e
25
+ if schema_attr
26
+ # if the Hash val is a recurly type, parse it into a Resource
27
+ val = if val.is_a?(Hash) && !schema_attr.is_primitive?
28
+ schema_attr.recurly_class.from_json(val)
29
+ elsif val.is_a?(Array)
30
+ val.map do |e|
31
+ if e.is_a?(Hash) && !schema_attr.is_primitive?
32
+ schema_attr.recurly_class.from_json(e)
33
+ else
34
+ e
35
+ end
34
36
  end
37
+ elsif val && schema_attr.type == DateTime && val.is_a?(String)
38
+ DateTime.parse(val)
39
+ else
40
+ val
35
41
  end
36
- elsif attr_name.end_with?("_at") && val && val.is_a?(String)
37
- # TODO should use the schema to determine this probably
38
- DateTime.parse(val)
39
- else
40
- val
41
- end
42
42
 
43
- writer = "#{attr_name}="
43
+ writer = "#{attr_name}="
44
44
 
45
- # TODO maybe check for protected writer first?
46
- begin
47
45
  resource.send(writer, val)
48
- rescue => e
46
+ else
49
47
  # TODO ignoring these missing fields for now
50
- puts e
48
+ puts "Missing #{attr_name}"
51
49
  end
52
50
  end
53
51
  resource
@@ -43,7 +43,7 @@ module Recurly
43
43
  elem
44
44
  end
45
45
  end
46
- elsif v.is_a?(Hash) && schema_attr.type.is_a?(Symbol)
46
+ elsif v.is_a?(Hash) && schema_attr && schema_attr.type.is_a?(Symbol)
47
47
  cast(v, schema_attr.recurly_class.schema)
48
48
  else
49
49
  v
@@ -37,14 +37,18 @@ module Recurly
37
37
  # Validates an individual attribute
38
38
  def validate_attribute!(schema_attr, val)
39
39
  unless schema_attr.type.is_a?(Symbol) || val.is_a?(schema_attr.type)
40
- expected = case schema_attr.type
41
- when Array
42
- "Array of #{schema_attr.type.item_type}s"
43
- else
44
- schema_attr.type
45
- end
46
-
47
- raise ArgumentError, "Attribute '#{schema_attr.name}' on the resource #{self.class.name} is type #{val.class} but should be a #{expected}"
40
+ # If it's safely castable, the json deserializer or server
41
+ # will take care of it for us
42
+ 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"
46
+ else
47
+ schema_attr.type
48
+ end
49
+
50
+ raise ArgumentError, "Attribute '#{schema_attr.name}' on the resource #{self.class.name} is type #{val.class} but should be a #{expected}"
51
+ end
48
52
  end
49
53
 
50
54
  # This is the convention for a recurly object
@@ -69,6 +73,25 @@ module Recurly
69
73
 
70
74
  private
71
75
 
76
+ def safely_castable?(from_type, to_type)
77
+ # TODO we can drop this switch when 2.3 support is dropped
78
+ int_class = if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("2.4.0")
79
+ :Integer
80
+ else
81
+ :Fixnum
82
+ end
83
+ int_class = Kernel.const_get(int_class)
84
+
85
+ case [from_type, to_type]
86
+ when [Symbol, String]
87
+ true
88
+ when [int_class, Float]
89
+ true
90
+ else
91
+ false
92
+ end
93
+ end
94
+
72
95
  # This code is copied directly from the did_you mean gem which is based
73
96
  # directly on the Text gem implementation.
74
97
  #
@@ -1,3 +1,3 @@
1
1
  module Recurly
2
- VERSION = "3.0.0.beta.3"
2
+ VERSION = "3.0.0.beta.4"
3
3
  end
data/recurly.gemspec CHANGED
@@ -21,7 +21,7 @@ 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.12"
24
+ spec.add_dependency "faraday", ">= 0.8.11", "<= 1.0.0"
25
25
 
26
26
  spec.add_development_dependency "net-http-persistent", "~> 2.9.4"
27
27
  spec.add_development_dependency "bundler", "~> 1.14"
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env bash
2
+ set -e
3
+
4
+ function check_for_command {
5
+ if ! hash eval "$1" 2>/dev/null; then
6
+ echo "✖ Could not find '$1'"
7
+ exit 1
8
+ fi
9
+ echo "✓ Found $1"
10
+ }
11
+
12
+ check_for_command "ruby"
13
+ check_for_command "bundle"
14
+
15
+ RUBY_VERSION=$(ruby --version)
16
+ RUBY_MAJOR=$(ruby --version | cut -d' ' -f2 | cut -d'.' -f1)
17
+ RUBY_MINOR=$(ruby --version | cut -d' ' -f2 | cut -d'.' -f2)
18
+
19
+ function unsupported_ruby_version {
20
+ echo "✖ Unsupported ruby version is ${RUBY_VERSION}"
21
+ exit 1
22
+ }
23
+
24
+ if [ "$RUBY_MAJOR" -lt "2" ] || [ "$RUBY_MINOR" -lt "3" ]; then
25
+ unsupported_ruby_version
26
+ else
27
+ echo "✓ Version ${RUBY_VERSION} is compatible"
28
+ fi
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env bash
2
+ set -e
3
+
4
+ if ! hash brew 2>/dev/null; then
5
+ echo "✖ Homebrew not found. Please install: https://brew.sh/"
6
+ exit 1
7
+ else
8
+ echo "✓ Found homebrew"
9
+ fi
10
+
11
+ if ! hash rbenv 2>/dev/null; then
12
+ read -p "✖ 'rbenv' not found. Would you like to install it? [Y/n] " -n 1 -r
13
+ echo
14
+ if [[ $REPLY =~ ^[Yy\n]$ ]]
15
+ then
16
+ brew install rbenv ruby-build && true
17
+ echo
18
+ echo "Please follow the rbenv instructions below before continuing:"
19
+ eval "$(rbenv init -)"
20
+ echo $(rbenv init)
21
+ read -p "Press enter to continue"
22
+ # Installs latest stable version
23
+ VERSION=$(rbenv install -l | grep -v - | tail -1)
24
+ rbenv install $VERSION
25
+ rbenv global $VERSION
26
+ else
27
+ exit 1
28
+ fi
29
+ else
30
+ echo "✓ Found rbenv"
31
+ fi
32
+
33
+ if ! hash bundle 2>/dev/null; then
34
+ read -p "✖ 'bundle' not found. Would you like to install it? [Y/n] " -n 1 -r
35
+ echo
36
+ if [[ $REPLY =~ ^[Yy]$ ]]
37
+ then
38
+ gem install bundler
39
+ else
40
+ exit 1
41
+ fi
42
+ else
43
+ echo "✓ Found bundle"
44
+ fi
metadata CHANGED
@@ -1,29 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: recurly
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.beta.3
4
+ version: 3.0.0.beta.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Recurly
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-18 00:00:00.000000000 Z
11
+ date: 2019-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 0.8.11
20
+ - - "<="
18
21
  - !ruby/object:Gem::Version
19
- version: '0.12'
22
+ version: 1.0.0
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 0.8.11
30
+ - - "<="
25
31
  - !ruby/object:Gem::Version
26
- version: '0.12'
32
+ version: 1.0.0
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: net-http-persistent
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -131,6 +137,7 @@ extra_rdoc_files: []
131
137
  files:
132
138
  - ".gitignore"
133
139
  - ".rspec"
140
+ - ".ruby-version"
134
141
  - ".travis.yml"
135
142
  - Gemfile
136
143
  - LICENSE.txt
@@ -146,22 +153,30 @@ files:
146
153
  - lib/recurly/errors/network_errors.rb
147
154
  - lib/recurly/pager.rb
148
155
  - lib/recurly/request.rb
156
+ - lib/recurly/requests/account_acquisition_cost.rb
149
157
  - lib/recurly/requests/account_acquisition_updatable.rb
150
158
  - lib/recurly/requests/account_create.rb
151
159
  - lib/recurly/requests/account_update.rb
152
160
  - lib/recurly/requests/add_on_create.rb
161
+ - lib/recurly/requests/add_on_pricing.rb
153
162
  - lib/recurly/requests/add_on_update.rb
154
163
  - lib/recurly/requests/address.rb
155
164
  - lib/recurly/requests/billing_info_create.rb
156
165
  - lib/recurly/requests/coupon_bulk_create.rb
157
166
  - lib/recurly/requests/coupon_create.rb
167
+ - lib/recurly/requests/coupon_pricing.rb
158
168
  - lib/recurly/requests/coupon_redemption_create.rb
159
169
  - lib/recurly/requests/coupon_update.rb
170
+ - lib/recurly/requests/external_refund.rb
171
+ - lib/recurly/requests/invoice_address.rb
160
172
  - lib/recurly/requests/invoice_create.rb
161
173
  - lib/recurly/requests/invoice_refund.rb
174
+ - lib/recurly/requests/invoice_updatable.rb
162
175
  - lib/recurly/requests/line_item_create.rb
163
176
  - lib/recurly/requests/line_item_refund.rb
164
177
  - lib/recurly/requests/plan_create.rb
178
+ - lib/recurly/requests/plan_hosted_pages.rb
179
+ - lib/recurly/requests/plan_pricing.rb
165
180
  - lib/recurly/requests/plan_update.rb
166
181
  - lib/recurly/requests/shipping_address_create.rb
167
182
  - lib/recurly/requests/shipping_address_update.rb
@@ -173,15 +188,22 @@ files:
173
188
  - lib/recurly/resource.rb
174
189
  - lib/recurly/resources/account.rb
175
190
  - lib/recurly/resources/account_acquisition.rb
191
+ - lib/recurly/resources/account_acquisition_cost.rb
176
192
  - lib/recurly/resources/account_balance.rb
193
+ - lib/recurly/resources/account_balance_amount.rb
177
194
  - lib/recurly/resources/account_mini.rb
178
195
  - lib/recurly/resources/account_note.rb
179
196
  - lib/recurly/resources/add_on.rb
180
197
  - lib/recurly/resources/add_on_mini.rb
198
+ - lib/recurly/resources/add_on_pricing.rb
181
199
  - lib/recurly/resources/address.rb
182
200
  - lib/recurly/resources/billing_info.rb
201
+ - lib/recurly/resources/billing_info_payment_method.rb
202
+ - lib/recurly/resources/billing_info_updated_by.rb
183
203
  - lib/recurly/resources/coupon.rb
184
204
  - lib/recurly/resources/coupon_discount.rb
205
+ - lib/recurly/resources/coupon_discount_pricing.rb
206
+ - lib/recurly/resources/coupon_discount_trial.rb
185
207
  - lib/recurly/resources/coupon_mini.rb
186
208
  - lib/recurly/resources/coupon_redemption.rb
187
209
  - lib/recurly/resources/coupon_redemption_mini.rb
@@ -190,13 +212,17 @@ files:
190
212
  - lib/recurly/resources/custom_field_definition.rb
191
213
  - lib/recurly/resources/error.rb
192
214
  - lib/recurly/resources/error_may_have_transaction.rb
215
+ - lib/recurly/resources/fraud_info.rb
193
216
  - lib/recurly/resources/invoice.rb
217
+ - lib/recurly/resources/invoice_address.rb
194
218
  - lib/recurly/resources/invoice_collection.rb
195
219
  - lib/recurly/resources/invoice_mini.rb
196
220
  - lib/recurly/resources/line_item.rb
197
221
  - lib/recurly/resources/line_item_list.rb
198
222
  - lib/recurly/resources/plan.rb
223
+ - lib/recurly/resources/plan_hosted_pages.rb
199
224
  - lib/recurly/resources/plan_mini.rb
225
+ - lib/recurly/resources/plan_pricing.rb
200
226
  - lib/recurly/resources/settings.rb
201
227
  - lib/recurly/resources/shipping_address.rb
202
228
  - lib/recurly/resources/site.rb
@@ -205,6 +231,8 @@ files:
205
231
  - lib/recurly/resources/subscription_change.rb
206
232
  - lib/recurly/resources/tax_info.rb
207
233
  - lib/recurly/resources/transaction.rb
234
+ - lib/recurly/resources/transaction_payment_gateway.rb
235
+ - lib/recurly/resources/transaction_payment_method.rb
208
236
  - lib/recurly/resources/unique_coupon_code.rb
209
237
  - lib/recurly/resources/user.rb
210
238
  - lib/recurly/schema.rb
@@ -216,7 +244,9 @@ files:
216
244
  - lib/recurly/version.rb
217
245
  - recurly.gemspec
218
246
  - scripts/build
247
+ - scripts/check-deps
219
248
  - scripts/clean
249
+ - scripts/install-deps
220
250
  - scripts/test
221
251
  homepage: https://partner-docs.recurly.com
222
252
  licenses:
@@ -238,7 +268,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
238
268
  version: 1.3.1
239
269
  requirements: []
240
270
  rubyforge_project:
241
- rubygems_version: 2.7.6
271
+ rubygems_version: 2.6.14.1
242
272
  signing_key:
243
273
  specification_version: 4
244
274
  summary: The ruby client for Recurly's Partner API