recurly 2.15.4 → 2.16.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 606d1c9d57755bcce599e207966798eac016a633bd332da79403a4d0829b1fa5
4
- data.tar.gz: 1217a5a9ec5b891ed2dfd3fc034653d1d745392da17e1b7204e2f0a179900ac9
3
+ metadata.gz: e239381f1946c2933db35636b8c7ee25c5ad51c4d39f1514c1e831dcc548cd79
4
+ data.tar.gz: 650ec4f07db78242d1bdac62eccb2b564ef00b2c71c97164561dce7dd0db6129
5
5
  SHA512:
6
- metadata.gz: 4ba12353016250cd6b368fc05c1c33cf329e8e4e81d46ea4b88aed6d9009fd96ec2c59486775011bad516cd84ef1fafae99255fb73af28cbd089936edb0b6d99
7
- data.tar.gz: a4440689f97dce2be180062f5ddcc6c5fb09a7124246b467583186549866c6446d5815892e91e9e183180fe07eaec98da1470bfbab2006a134935aedef496fc7
6
+ metadata.gz: 21ff58a6c85dd74286cb0c879294d74bc90efbb94e764415e2d55452bc56b52190d3f1ea2df93949ecd00e9be03f802943c90253bebd405c1dd7630f2af6760d
7
+ data.tar.gz: 38cb19db071c857a910bb8b41f3a5ff7fbdceae6467d8e9935d339f48601f4b859042d07d95caf201dc2bab7b30782a0a6e508a7c7b250856e31fca62c15fd52
data/README.md CHANGED
@@ -14,7 +14,7 @@ Recurly is packaged as a Ruby gem. We recommend you install it with
14
14
  [Bundler](http://gembundler.com/) by adding the following line to your Gemfile:
15
15
 
16
16
  ``` ruby
17
- gem 'recurly', '~> 2.15.4'
17
+ gem 'recurly', '~> 2.16.0'
18
18
  ```
19
19
 
20
20
  Recurly will automatically use [Nokogiri](http://nokogiri.org/) (for a nice
data/lib/recurly.rb CHANGED
@@ -6,6 +6,7 @@ module Recurly
6
6
  require 'recurly/resource'
7
7
  require 'recurly/shipping_address'
8
8
  require 'recurly/billing_info'
9
+ require 'recurly/custom_field'
9
10
  require 'recurly/account'
10
11
  require 'recurly/account_balance'
11
12
  require 'recurly/add_on'
@@ -137,5 +138,3 @@ module Recurly
137
138
  end
138
139
  end
139
140
  end
140
-
141
- require 'rails/recurly' if defined? Rails::Railtie
@@ -42,6 +42,9 @@ module Recurly
42
42
  # @return [Pager<CreditPayment>, []]
43
43
  has_many :credit_payments, class_name: :CreditPayment, readonly: true
44
44
 
45
+ # @return [[CustomField], []]
46
+ has_many :custom_fields, class_name: :CustomField, readonly: false
47
+
45
48
  # Get's the first redemption given a coupon code
46
49
  # @deprecated Use #{redemptions} instead
47
50
  # @param coupon_code [String] The coupon code for the redemption
@@ -149,6 +152,9 @@ module Recurly
149
152
  if address.respond_to?(:changed?) && address.changed?
150
153
  attrs['address'] = address
151
154
  end
155
+ if custom_fields.any?(&:changed?)
156
+ attrs['custom_fields'] = custom_fields.select(&:changed?)
157
+ end
152
158
  attrs
153
159
  end
154
160
 
data/lib/recurly/api.rb CHANGED
@@ -17,7 +17,7 @@ module Recurly
17
17
  @@base_uri = "https://api.recurly.com/v2/"
18
18
  @@valid_domains = [".recurly.com"]
19
19
 
20
- RECURLY_API_VERSION = '2.12'
20
+ RECURLY_API_VERSION = '2.13'
21
21
 
22
22
  FORMATS = Helper.hash_with_indifferent_read_access(
23
23
  'pdf' => 'application/pdf',
@@ -0,0 +1,15 @@
1
+ module Recurly
2
+ # Recurly Documentation: https://dev.recurly.com/docs/custom-fields
3
+ class CustomField < Resource
4
+
5
+ define_attribute_methods %w(
6
+ name
7
+ value
8
+ )
9
+
10
+ # include the name with the serialized field, even though it can't change
11
+ def xml_keys
12
+ attributes.keys
13
+ end
14
+ end
15
+ end
@@ -29,6 +29,10 @@ module Recurly
29
29
  # @return [Pager<Adjustment>, []]
30
30
  has_many :all_line_items, class_name: :Adjustment
31
31
 
32
+ # This will only be present if the invoice has > 500 transactions
33
+ # @return [Pager<Transaction>, []]
34
+ has_many :all_transactions, class_name: :Transaction
35
+
32
36
  # @return [Pager<Redemption>, []]
33
37
  has_many :redemptions
34
38
 
data/lib/recurly/money.rb CHANGED
@@ -99,8 +99,6 @@ module Recurly
99
99
  end
100
100
  alias to_s inspect
101
101
 
102
- protected
103
-
104
102
  attr_reader :currencies
105
103
 
106
104
  private
data/lib/recurly/plan.rb CHANGED
@@ -31,6 +31,7 @@ module Recurly
31
31
  tax_exempt
32
32
  tax_code
33
33
  trial_requires_billing_info
34
+ auto_renew
34
35
  created_at
35
36
  updated_at
36
37
  )
@@ -123,6 +123,7 @@ module Recurly
123
123
  customer_notes
124
124
  vat_reverse_charge_notes
125
125
  shipping_address_id
126
+ gateway_code
126
127
  )
127
128
 
128
129
  class << self
@@ -170,11 +171,30 @@ module Recurly
170
171
  post(purchase, "#{collection_path}/pending")
171
172
  end
172
173
 
174
+ # Allows the merchant to cancel an authorization.
175
+ #
176
+ # @param transaction_uuid [String] The uuid for the transaction representing the authorization. Can typically be found at invoice_collection.charge_invoice.transactions.first.uuid.
177
+ # @return [InvoiceCollection] The canceled invoice collection.
178
+ # @raise [Invalid] Raised if the authorization cannot be canceled.
179
+ def cancel!(transaction_uuid)
180
+ post(nil, "#{collection_path}/transaction-uuid-#{transaction_uuid}/cancel")
181
+ end
182
+
183
+ # Allows the merchants to initiate a capture transaction tied to the original authorization.
184
+ #
185
+ # @param transaction_uuid [String] The uuid for the transaction representing the authorization. Can typically be found at invoice_collection.charge_invoice.transactions.first.uuid.
186
+ # @return [InvoiceCollection] The captured invoice collection.
187
+ # @raise [Invalid] Raised if the authorization cannot be captured.
188
+ def capture!(transaction_uuid)
189
+ post(nil, "#{collection_path}/transaction-uuid-#{transaction_uuid}/capture")
190
+ end
191
+
173
192
  def post(purchase, path)
174
- response = API.send(:post, path, purchase.to_xml)
193
+ body = purchase.nil? ? nil : purchase.to_xml
194
+ response = API.send(:post, path, body)
175
195
  InvoiceCollection.from_response(response)
176
196
  rescue API::UnprocessableEntity => e
177
- purchase.apply_errors(e)
197
+ purchase.apply_errors(e) if purchase
178
198
  Transaction::Error.validate!(e, nil)
179
199
  raise Resource::Invalid.new(purchase)
180
200
  end
@@ -508,7 +508,7 @@ module Recurly
508
508
  # @return [Proc, nil]
509
509
  # @param collection_name [Symbol] Association name.
510
510
  # @param options [Hash] A hash of association options.
511
- # @option options [true, false] :readonly Don't define a setter.
511
+ # @option options [true, false] :readonly Define a setter when false, defaults to true
512
512
  # [String] :class_name Actual associated resource class name
513
513
  # if not same as collection_name.
514
514
  def has_many(collection_name, options = {})
@@ -518,7 +518,7 @@ module Recurly
518
518
  if self[collection_name]
519
519
  self[collection_name]
520
520
  else
521
- attributes[collection_name] = []
521
+ attributes[collection_name.to_s] = []
522
522
  end
523
523
  end
524
524
  if options.key?(:readonly) && options[:readonly] == false
@@ -20,6 +20,9 @@ module Recurly
20
20
  # @return [Pager<Redemption>, []]
21
21
  has_many :redemptions
22
22
 
23
+ # @return [[CustomField], []]
24
+ has_many :custom_fields, class_name: :CustomField, readonly: false
25
+
23
26
  # @return [Account]
24
27
  belongs_to :account
25
28
 
@@ -82,6 +85,13 @@ module Recurly
82
85
  credit_customer_notes
83
86
  remaining_pause_cycles
84
87
  paused_at
88
+ auto_renew
89
+ renewal_billing_cycles
90
+ first_billing_date
91
+ first_bill_date
92
+ next_bill_date
93
+ current_term_started_at
94
+ current_term_ends_at
85
95
  )
86
96
  alias to_param uuid
87
97
 
@@ -281,6 +291,15 @@ module Recurly
281
291
  super.merge :plan_code => plan_code
282
292
  end
283
293
 
294
+ def changed_attributes
295
+ attrs = super
296
+ if custom_fields.any?(&:changed?)
297
+ attrs['custom_fields'] = custom_fields.select(&:changed?)
298
+ end
299
+ attrs
300
+ end
301
+
302
+
284
303
  private
285
304
 
286
305
  def clear_attributes_if_plan_code_changed attributes
@@ -1,8 +1,8 @@
1
1
  module Recurly
2
2
  module Version
3
3
  MAJOR = 2
4
- MINOR = 15
5
- PATCH = 4
4
+ MINOR = 16
5
+ PATCH = 0
6
6
  PRE = nil
7
7
 
8
8
  VERSION = [MAJOR, MINOR, PATCH, PRE].compact.join('.').freeze
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: 2.15.4
4
+ version: 2.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Recurly
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-16 00:00:00.000000000 Z
11
+ date: 2018-06-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -160,8 +160,6 @@ extra_rdoc_files:
160
160
  files:
161
161
  - README.md
162
162
  - bin/recurly
163
- - lib/rails/generators/recurly/config_generator.rb
164
- - lib/rails/recurly.rb
165
163
  - lib/recurly.rb
166
164
  - lib/recurly/account.rb
167
165
  - lib/recurly/account_balance.rb
@@ -174,6 +172,7 @@ files:
174
172
  - lib/recurly/billing_info.rb
175
173
  - lib/recurly/coupon.rb
176
174
  - lib/recurly/credit_payment.rb
175
+ - lib/recurly/custom_field.rb
177
176
  - lib/recurly/delivery.rb
178
177
  - lib/recurly/error.rb
179
178
  - lib/recurly/gift_card.rb
@@ -1,25 +0,0 @@
1
- module Recurly
2
- class ConfigGenerator < Rails::Generators::Base
3
- desc "Creates a configuration file at config/initializers/recurly.rb"
4
-
5
- # Creates a configuration file at <tt>config/initializers/recurly.rb</tt>
6
- # when running <tt>rails g recurly:config</tt>.
7
- def create_recurly_file
8
- create_file 'config/initializers/recurly.rb', <<EOF
9
-
10
- # Required (this should contain subdomain for your recurly account)
11
- Recurly.subdomain = ENV['RECURLY_SUBDOMAIN']
12
-
13
- # Required (this is your "Private API Key" which can be found under "API Credentials" in the admin panel
14
- Recurly.api_key = ENV['RECURLY_API_KEY']
15
-
16
- # Optional (if you want to change the default currency from USD)
17
- # Recurly.default_currency = 'USD'
18
-
19
- # Optional (if you want to use Recurly.js you can store public_key here)
20
- # Recurly.js.public_key = ENV['RECURLY_PUBLIC_API_KEY']
21
-
22
- EOF
23
- end
24
- end
25
- end
data/lib/rails/recurly.rb DELETED
@@ -1,18 +0,0 @@
1
- module Recurly
2
- class Railtie < Rails::Railtie
3
- initializer :recurly_set_logger do
4
- Recurly.logger = Rails.logger
5
- end
6
-
7
- initializer :recurly_set_accept_language do
8
- prepend_method = :prepend_before_filter
9
- if ActionController::Base.respond_to?(:prepend_before_action)
10
- prepend_method = :prepend_before_action
11
- end
12
-
13
- ActionController::Base.send(prepend_method) do
14
- Recurly::API.accept_language = request.env['HTTP_ACCEPT_LANGUAGE']
15
- end
16
- end
17
- end
18
- end