recurly 2.12.2 → 2.13.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 74023d51f607419b02eebf1519c5bf2fd10ad2d5a6936f1cf91ec9f4826cc306
4
- data.tar.gz: 150c6aa2260f26af8e404a8fc2aecc195bbc674aa43ed23dea707bc3232905b7
2
+ SHA1:
3
+ metadata.gz: ce78f65370210f07aadec09d3ee7adc7914953c6
4
+ data.tar.gz: 3645d216c72e512ac2a9404524de84f051a581ac
5
5
  SHA512:
6
- metadata.gz: 54f0574b246972282aeb8a486d136dd458f33c94cf2768d4834cd767c6245ae75c4c264d502f8e5c91bbfd13daa0ab779a876a926bfff87ebeba2ce5bd7904c0
7
- data.tar.gz: f3cc7e804713624a2aab966619df96733e391e778d454cecaff64d98ad43f3e9cfd142152bd764faf020fc50b98c32978f023bfe1ae99337e5248d8768e8f7ba
6
+ metadata.gz: de8957a86ec7fa7d81af94bcc62fbcef07d8c4fb26c2ebc935c1f09fbf9a14fd9658c1be9c8fe51c4a45c570cb2256c5cfc65217f90c2f4e6ac3685b379d9a60
7
+ data.tar.gz: 3715c88543466b84c2e79d48fbadcbf04b1c4e0ddcce586356a3bfeea4fad2951eb01010aa9171abfa8f2bd8573ee23e316b83c18635fdd940b494a6e6509f1d
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.12.1'
17
+ gem 'recurly', '~> 2.13.0'
18
18
  ```
19
19
 
20
20
  Recurly will automatically use [Nokogiri](http://nokogiri.org/) (for a nice
@@ -39,6 +39,9 @@ module Recurly
39
39
  # @return [AccountBalance, nil]
40
40
  has_one :account_balance, readonly: true
41
41
 
42
+ # @return [Pager<CreditPayment>, []]
43
+ has_many :credit_payments, class_name: :CreditPayment, readonly: true
44
+
42
45
  # Get's the first redemption given a coupon code
43
46
  # @deprecated Use #{redemptions} instead
44
47
  # @param coupon_code [String] The coupon code for the redemption
@@ -76,10 +79,10 @@ module Recurly
76
79
  # Creates an invoice from the pending charges on the account.
77
80
  # Raises an error if it fails.
78
81
  #
79
- # @return [Invoice] A newly-created invoice.
82
+ # @return [InvoiceCollection] A newly-created invoice.
80
83
  # @raise [Invalid] Raised if the account cannot be invoiced.
81
84
  def invoice!(attrs={})
82
- Invoice.from_response API.post(invoices.uri, attrs.empty? ? nil : Invoice.to_xml(attrs))
85
+ InvoiceCollection.from_response API.post(invoices.uri, attrs.empty? ? nil : Invoice.to_xml(attrs))
83
86
  rescue Recurly::API::UnprocessableEntity => e
84
87
  raise Invalid, e.message
85
88
  end
@@ -87,10 +90,10 @@ module Recurly
87
90
  # Builds an invoice from the pending charges on the account but does not persist the invoice.
88
91
  # Raises an error if it fails.
89
92
  #
90
- # @return [Invoice] The newly-built invoice that has not been persisted.
93
+ # @return [InvoiceCollection] The newly-built invoice that has not been persisted.
91
94
  # @raise [Invalid] Raised if the account cannot be invoiced.
92
95
  def build_invoice
93
- Invoice.from_response API.post("#{invoices.uri}/preview")
96
+ InvoiceCollection.from_response API.post("#{invoices.uri}/preview")
94
97
  rescue Recurly::API::UnprocessableEntity => e
95
98
  raise Invalid, e.message
96
99
  end
@@ -106,6 +109,39 @@ module Recurly
106
109
  true
107
110
  end
108
111
 
112
+ # Verify a cvv code for the account's billing info.
113
+ #
114
+ # @example
115
+ # acct = Recurly::Account.find('benjamin-du-monde')
116
+ # begin
117
+ # # If successful, returned billing_info will contain
118
+ # # updated billing info details.
119
+ # billing_info = acct.verify_cvv!("504")
120
+ # rescue Recurly::API::BadRequest => e
121
+ # e.message # => "This credit card has too many cvv check attempts."
122
+ # rescue Recurly::Transaction::Error => e
123
+ # # this will be the errors coming back from gateway
124
+ # e.transaction_error_code # => "fraud_security_code"
125
+ # e.gateway_error_code # => "fraud"
126
+ # rescue Recurly::Resource::Invalid => e
127
+ # e.message # => "verification_value must be three digits"
128
+ # end
129
+ #
130
+ # @param [String] verification_value The CVV code to check
131
+ # @return [BillingInfo] The updated billing info
132
+ # @raise [Recurly::Transaction::Error] A Transaction Error will be raised if the gateway declines
133
+ # the cvv code.
134
+ # @raise [API::BadRequest] A BadRequest error will be raised if you attempt to check too many times
135
+ # and are locked out.
136
+ # @raise [Resource::Invalid] An Invalid Error will be raised if you send an invalid request (such as
137
+ # a value that is not a propert verification number).
138
+ def verify_cvv!(verification_value)
139
+ bi = BillingInfo.new(verification_value: verification_value)
140
+ bi.uri = "#{path}/billing_info/verify_cvv"
141
+ bi.save!
142
+ bi
143
+ end
144
+
109
145
  def changed_attributes
110
146
  attrs = super
111
147
  if address.respond_to?(:changed?) && address.changed?
@@ -18,6 +18,9 @@ module Recurly
18
18
  # @return [Subscription, nil]
19
19
  belongs_to :subscription
20
20
 
21
+ # @return [Pager<Adjustment>, []]
22
+ has_many :credit_adjustments, class_name: :Adjustment, readonly: true
23
+
21
24
  define_attribute_methods %w(
22
25
  uuid
23
26
  state
@@ -45,6 +48,8 @@ module Recurly
45
48
  tax_details
46
49
  tax_types
47
50
  proration_rate
51
+ credit_reason_code
52
+ original_adjustment_uuid
48
53
  )
49
54
  alias to_param uuid
50
55
 
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.9'
20
+ RECURLY_API_VERSION = '2.10'
21
21
 
22
22
  FORMATS = Helper.hash_with_indifferent_read_access(
23
23
  'pdf' => 'application/pdf',
@@ -0,0 +1,28 @@
1
+ module Recurly
2
+ class CreditPayment < Resource
3
+ # @return [Account, nil]
4
+ belongs_to :account, class_name: :Account, readonly: true
5
+
6
+ # @return [Invoice, nil]
7
+ has_one :original_invoice, class_name: :Invoice, readonly: true
8
+
9
+ # @return [Invoice, nil]
10
+ has_one :applied_to_invoice, class_name: :Invoice, readonly: true
11
+
12
+ define_attribute_methods %w(
13
+ action
14
+ amount_in_cents
15
+ currency
16
+ created_at
17
+ original_credit_payment
18
+ refund_transaction
19
+ updated_at
20
+ uuid
21
+ voided_at
22
+ )
23
+ alias to_param uuid
24
+
25
+ # @return ["charge", "credit", nil] The type of credit payment.
26
+ attr_reader :type
27
+ end
28
+ end
@@ -10,20 +10,21 @@ module Recurly
10
10
  # @macro [attach] scope
11
11
  # @scope class
12
12
  # @return [Pager<Invoice>] A pager that yields +$1+ invoices.
13
- scope :open, :state => :open
14
- scope :collected, :state => :collected
13
+ scope :pending, :state => :pending
14
+ scope :paid, :state => :paid
15
15
  scope :failed, :state => :failed
16
16
  scope :past_due, :state => :past_due
17
17
 
18
+ # These are deprecated as the states were renamed
19
+ scope :open, :state => :pending
20
+ scope :collected, :state => :paid
21
+
18
22
  # @return [Account]
19
23
  belongs_to :account
20
24
 
21
25
  # @return [Pager<Subscription>, []]
22
26
  has_many :subscriptions
23
27
 
24
- # @return [Invoice]
25
- belongs_to :original_invoice, class_name: :Invoice
26
-
27
28
  # This will only be present if the invoice has > 500 line items
28
29
  # @return [Pager<Adjustment>, []]
29
30
  has_many :all_line_items, class_name: :Adjustment
@@ -32,7 +33,16 @@ module Recurly
32
33
  has_many :redemptions
33
34
 
34
35
  # @return [Pager<ShippingAddress>, [ShippingAddress], []]
35
- has_one :shipping_address, resource_class: :ShippingAddress, readonly: true
36
+ has_one :shipping_address, class_name: :ShippingAddress, readonly: true
37
+
38
+ # @return [Pager<Invoice>, []]
39
+ has_many :credit_invoices, class_name: :Invoice
40
+
41
+ # @return [[CreditPayment]]
42
+ has_many :credit_payments, class_name: :CreditPayment, readonly: true
43
+
44
+ # @return [Pager<Invoice>, []]
45
+ has_many :original_invoices, class_name: :Invoice, readonly: true
36
46
 
37
47
  # Returns the first redemption in the Invoice's redemptions.
38
48
  # This was placed here for backwards compatibility when we went from
@@ -76,9 +86,16 @@ module Recurly
76
86
  tax_types
77
87
  refund_tax_date
78
88
  refund_geo_code
79
- subtotal_after_discount_in_cents
89
+ subtotal_before_discount_in_cents
80
90
  attempt_next_collection_at
81
91
  recovery_reason
92
+ discount_in_cents
93
+ balance_in_cents
94
+ due_on
95
+ type
96
+ origin
97
+ credit_customer_notes
98
+ refund_method
82
99
  )
83
100
  alias to_param invoice_number_with_prefix
84
101
 
@@ -110,13 +127,23 @@ module Recurly
110
127
  # Initiate a collection attempt on an invoice.
111
128
  #
112
129
  # @return [true, false] +true+ when successful, +false+ when unable to
113
- # (e.g., the invoice has already been collected, a collection attempt was already made)
130
+ # (e.g., the invoice is no longer open).
114
131
  def force_collect
115
132
  return false unless link? :force_collect
116
133
  reload follow_link :force_collect
117
134
  true
118
135
  end
119
136
 
137
+ # Voids the invoice.
138
+ #
139
+ # @return [true, false] +true+ when successful, +false+ when unable to
140
+ # (e.g., the invoice is no longer open).
141
+ def void
142
+ return false unless link? :void
143
+ reload follow_link :void
144
+ true
145
+ end
146
+
120
147
  # Posts an offline payment on this invoice
121
148
  #
122
149
  # @return [Transaction]
@@ -134,16 +161,16 @@ module Recurly
134
161
 
135
162
  # Refunds specific line items on the invoice.
136
163
  #
137
- # @return [Invoice, false] A new refund invoice, false if the invoice isn't
164
+ # @return [InvoiceCollection, false] A new refund invoice, false if the invoice isn't
138
165
  # refundable.
139
166
  # @raise [Error] If the refund fails.
140
167
  # @param line_items [Array, nil] An array of line items to refund.
141
- def refund line_items = nil, refund_apply_order = 'credit'
168
+ # @param refund_method ["credit_first", "transaction_first"] The method used to refund.
169
+ def refund(line_items = nil, refund_method = 'credit_first')
142
170
  return false unless link? :refund
143
- refund = self.class.from_response(
144
- follow_link :refund, :body => refund_line_items_to_xml(line_items, refund_apply_order)
171
+ InvoiceCollection.from_response(
172
+ follow_link :refund, :body => refund_line_items_to_xml(line_items, refund_method)
145
173
  )
146
- refund
147
174
  end
148
175
 
149
176
  # Refunds the invoice for a specific amount.
@@ -152,12 +179,12 @@ module Recurly
152
179
  # refundable.
153
180
  # @raise [Error] If the refund fails.
154
181
  # @param amount_in_cents [Integer, nil] The amount (in cents) to refund.
155
- def refund_amount amount_in_cents = nil, refund_apply_order = 'credit'
182
+ # @param refund_method ["credit_first", "transaction_first"] The method used to refund.
183
+ def refund_amount amount_in_cents = nil, refund_method = 'credit_first'
156
184
  return false unless link? :refund
157
- refund = self.class.from_response(
158
- follow_link :refund, :body => refund_amount_to_xml(amount_in_cents, refund_apply_order)
185
+ InvoiceCollection.from_response(
186
+ follow_link :refund, :body => refund_amount_to_xml(amount_in_cents, refund_method)
159
187
  )
160
- refund
161
188
  end
162
189
 
163
190
  def xml_keys
@@ -170,16 +197,16 @@ module Recurly
170
197
  super({ :currency => Recurly.default_currency }.merge attributes)
171
198
  end
172
199
 
173
- def refund_amount_to_xml amount_in_cents = nil, refund_apply_order
200
+ def refund_amount_to_xml amount_in_cents = nil, refund_method
174
201
  builder = XML.new("<invoice/>")
175
- builder.add_element 'refund_apply_order', refund_apply_order
202
+ builder.add_element 'refund_method', refund_method
176
203
  builder.add_element 'amount_in_cents', amount_in_cents
177
204
  builder.to_s
178
205
  end
179
206
 
180
- def refund_line_items_to_xml line_items = [], refund_apply_order
207
+ def refund_line_items_to_xml line_items = [], refund_method
181
208
  builder = XML.new("<invoice/>")
182
- builder.add_element 'refund_apply_order', refund_apply_order
209
+ builder.add_element 'refund_method', refund_method
183
210
 
184
211
  node = builder.add_element 'line_items'
185
212
  line_items.each do |line_item|
@@ -0,0 +1,14 @@
1
+ module Recurly
2
+ class InvoiceCollection < Resource
3
+ # @return [Invoice, nil]
4
+ has_one :charge_invoice, class_name: :Invoice, readonly: true
5
+
6
+ # @return [[Invoice], []]
7
+ has_many :credit_invoices, class_name: :Invoice, readonly: true
8
+
9
+ # These are readonly resources
10
+ embedded! true
11
+ undef save
12
+ undef destroy
13
+ end
14
+ end
@@ -105,7 +105,7 @@ module Recurly
105
105
  # Generate an invoice for the purchase and run any needed transactions.
106
106
  #
107
107
  # @param purchase [Purchase] The purchase data for the request.
108
- # @return [Invoice] The saved invoice representing this purchase.
108
+ # @return [InvoiceCollection] The saved invoice(s) representing this purchase.
109
109
  # @raise [Invalid] Raised if the purchase cannot be invoiced.
110
110
  # @raise [Transaction::Error] Raised if the transaction failed.
111
111
  def invoice!(purchase)
@@ -116,7 +116,7 @@ module Recurly
116
116
  # but does not run any transactions.
117
117
  #
118
118
  # @param purchase [Purchase] The purchase data for the request.
119
- # @return [Invoice] The preview invoice representing this purchase.
119
+ # @return [InvoiceCollection] The preview invoice(s) representing this purchase.
120
120
  # @raise [Invalid] Raised if the purchase cannot be invoiced.
121
121
  def preview!(purchase)
122
122
  post(purchase, "#{collection_path}/preview")
@@ -129,7 +129,7 @@ module Recurly
129
129
  # Payment Pages).
130
130
  #
131
131
  # @param purchase [Purchase] The purchase data for the request.
132
- # @return [Invoice] The authorized invoice representing this purchase.
132
+ # @return [InvoiceCollection] The authorized invoice collection representing this purchase.
133
133
  # @raise [Invalid] Raised if the purchase cannot be invoiced.
134
134
  def authorize!(purchase)
135
135
  post(purchase, "#{collection_path}/authorize")
@@ -137,7 +137,7 @@ module Recurly
137
137
 
138
138
  def post(purchase, path)
139
139
  response = API.send(:post, path, purchase.to_xml)
140
- Invoice.from_response(response)
140
+ InvoiceCollection.from_response(response)
141
141
  rescue API::UnprocessableEntity => e
142
142
  purchase.apply_errors(e)
143
143
  Transaction::Error.validate!(e, nil)
@@ -391,18 +391,7 @@ module Recurly
391
391
  # @see from_response
392
392
  def from_xml(xml)
393
393
  xml = XML.new xml
394
-
395
- if self != Resource || xml.name == member_name
396
- record = new
397
- elsif Recurly.const_defined?(class_name = Helper.classify(xml.name), false)
398
- klass = Recurly.const_get class_name, false
399
- record = klass.send :new
400
- elsif root = xml.root and root.elements.empty?
401
- return XML.cast root
402
- else
403
- record = {}
404
- end
405
- klass ||= self
394
+ record = new
406
395
 
407
396
  xml.root.attributes.each do |name, value|
408
397
  record.instance_variable_set "@#{name}", value.to_s
@@ -425,26 +414,31 @@ module Recurly
425
414
  # we dont care about text nodes, let's just skip them
426
415
  next if defined?(Nokogiri::XML::Node::TEXT_NODE) && el.node_type == Nokogiri::XML::Node::TEXT_NODE
427
416
 
428
- if el.children.empty? && href = el.attribute('href')
429
- klass_name = Helper.classify(klass.association_class_name(el.name) ||
430
- el.attribute('type') ||
431
- el.name)
432
-
433
- next unless Recurly.const_defined?(klass_name)
434
-
435
- resource_class = Recurly.const_get(klass_name, false)
436
-
437
- case el.name
438
- when *klass.associations_for_relation(:has_many)
439
- record[el.name] = Pager.new(
440
- resource_class, :uri => href.value, :parent => record
441
- )
442
- when *(klass.associations_for_relation(:has_one) + klass.associations_for_relation(:belongs_to))
443
- record.links[el.name] = {
444
- :resource_class => resource_class,
445
- :method => :get,
446
- :href => href.value
447
- }
417
+ if association = find_association(el.name)
418
+ class_name = association_class_name(association, el.name)
419
+ resource_class = Recurly.const_get(class_name)
420
+ is_many = association.relation == :has_many
421
+
422
+ # Is this a link, or is it embedded data?
423
+ if el.children.empty? && href = el.attribute('href')
424
+ if is_many
425
+ record[el.name] = Pager.new(
426
+ resource_class, :uri => href.value, :parent => record
427
+ )
428
+ else
429
+ record.links[el.name] = {
430
+ :resource_class => resource_class,
431
+ :method => :get,
432
+ :href => href.value
433
+ }
434
+ end
435
+ else
436
+ if is_many
437
+ resources = el.elements.map { |e| resource_class.from_xml(e) }
438
+ record[el.name] = resources
439
+ else
440
+ record[el.name] = resource_class.from_xml(el)
441
+ end
448
442
  end
449
443
  else
450
444
  # TODO name tax_type conflicts with the TaxType
@@ -484,12 +478,9 @@ module Recurly
484
478
  associations.select{ |a| a.relation == relation }.map(&:resource_class)
485
479
  end
486
480
 
487
- # @return [String, nil] The actual associated resource class name
488
- # for the current class if the resource class does not match the
489
- # actual class.
490
- def association_class_name(resource_class)
491
- association = find_association(resource_class)
492
- association.class_name if association
481
+ def association_class_name(association, el_name)
482
+ return association.class_name if association.class_name
483
+ Helper.classify(el_name)
493
484
  end
494
485
 
495
486
  # @return [Association, nil] Find association for the current class
@@ -599,6 +590,13 @@ module Recurly
599
590
  private_class_method(*%w(all find_each first paginate scoped where))
600
591
  end
601
592
  end
593
+
594
+ def find_resource_class(name)
595
+ resource_name = Helper.classify(name)
596
+ if Recurly.const_defined?(resource_name, false)
597
+ Recurly.const_get(resource_name, false)
598
+ end
599
+ end
602
600
  end
603
601
 
604
602
  # @return [Hash] The raw hash of record attributes.
@@ -33,7 +33,7 @@ module Recurly
33
33
  has_one :gift_card
34
34
 
35
35
  # @return [ShippingAddress, nil]
36
- has_one :shipping_address, resource_class: :ShippingAddress, readonly: false
36
+ has_one :shipping_address, class_name: :ShippingAddress, readonly: false
37
37
 
38
38
  define_attribute_methods %w(
39
39
  uuid
@@ -76,6 +76,7 @@ module Recurly
76
76
  converted_at
77
77
  no_billing_info_reason
78
78
  imported_trial
79
+ credit_customer_notes
79
80
  )
80
81
  alias to_param uuid
81
82
 
@@ -1,8 +1,8 @@
1
1
  module Recurly
2
2
  module Version
3
3
  MAJOR = 2
4
- MINOR = 12
5
- PATCH = 2
4
+ MINOR = 13
5
+ PATCH = 0
6
6
  PRE = nil
7
7
 
8
8
  VERSION = [MAJOR, MINOR, PATCH, PRE].compact.join('.').freeze
@@ -0,0 +1,8 @@
1
+ module Recurly
2
+ module Webhook
3
+ class NewUsageNotification < AccountNotification
4
+ # @return [Usage]
5
+ has_one :usage
6
+ end
7
+ end
8
+ end
@@ -47,6 +47,7 @@ module Recurly
47
47
  autoload :ProcessingInvoiceNotification, 'recurly/webhook/processing_invoice_notification'
48
48
  autoload :ScheduledPaymentNotification, 'recurly/webhook/scheduled_payment_notification'
49
49
  autoload :NewDunningEventNotification, 'recurly/webhook/new_dunning_event_notification'
50
+ autoload :NewUsageNotification, 'recurly/webhook/new_usage_notification'
50
51
 
51
52
  # This exception is raised if the Webhook Notification initialization fails
52
53
  class NotificationError < Error
@@ -46,7 +46,10 @@ module Recurly
46
46
  end
47
47
 
48
48
  def to_s
49
- root.to_xml(:indent => 0,:save_with => Nokogiri::XML::Node::SaveOptions::NO_EMPTY_TAGS).gsub(/$\n/, '')
49
+ root.to_xml(
50
+ indent: 0,
51
+ save_with: Nokogiri::XML::Node::SaveOptions::NO_EMPTY_TAGS
52
+ ).gsub(/$\n/, '')
50
53
  end
51
54
  end
52
55
 
data/lib/recurly/xml.rb CHANGED
@@ -1,38 +1,42 @@
1
1
  module Recurly
2
2
  class XML
3
3
  class << self
4
- def cast el
4
+ def cast(el)
5
+ # return nil if the `nil` attribute is present
5
6
  return if el.attribute 'nil'
6
7
 
7
- if el.attribute 'type'
8
- type = el.attribute('type').value
9
- end
8
+ # get the type from the xml attribute but default to nil
9
+ type = if el.attribute('type')
10
+ el.attribute('type').value
11
+ end
10
12
 
13
+ # try to parse it as a known simple type
11
14
  case type
12
- when 'array' then el.elements.map { |e| XML.cast e }
15
+ when 'array' then el.elements.map { |e| cast(e) }
13
16
  when 'boolean' then el.text == 'true'
14
- when 'date' then Date.parse el.text
15
- when 'datetime' then DateTime.parse el.text
17
+ when 'date' then Date.parse(el.text)
18
+ when 'datetime' then DateTime.parse(el.text)
16
19
  when 'float' then el.text.to_f
17
20
  when 'integer' then el.text.to_i
18
21
  else
19
- # FIXME: Move some of this logic to Resource.from_xml?
22
+ # try to find a Resource class responsible for this element
20
23
  [el.name, type].each do |name|
21
24
  next unless name
22
- resource_name = Helper.classify name
23
- if Recurly.const_defined? resource_name, false
24
- return Recurly.const_get(resource_name, false).from_xml el
25
+ if resource = Recurly::Resource.find_resource_class(name)
26
+ return resource.from_xml(el)
25
27
  end
26
28
  end
29
+
30
+ # fallback to parsing it as a String or a Hash
27
31
  if el.elements.empty?
28
32
  el.text
29
33
  else
30
- Hash[el.elements.map { |e| [e.name, XML.cast(e)] }]
34
+ Hash[el.elements.map { |e| [e.name, cast(e)] }]
31
35
  end
32
36
  end
33
37
  end
34
38
 
35
- def filter text
39
+ def filter(text)
36
40
  xml = XML.new text
37
41
  xml.each do |el|
38
42
  el = XML.new el
data/lib/recurly.rb CHANGED
@@ -14,8 +14,10 @@ module Recurly
14
14
  require 'recurly/juris_detail'
15
15
  require 'recurly/adjustment'
16
16
  require 'recurly/coupon'
17
+ require 'recurly/credit_payment'
17
18
  require 'recurly/helper'
18
19
  require 'recurly/invoice'
20
+ require 'recurly/invoice_collection'
19
21
  require 'recurly/js'
20
22
  require 'recurly/money'
21
23
  require 'recurly/measured_unit'
@@ -87,8 +89,6 @@ module Recurly
87
89
  end
88
90
 
89
91
  # Assigns a logger to log requests/responses and more.
90
- # The logger can only be set if the environment variable
91
- # `RECURLY_INSECURE_DEBUG` equals `true`.
92
92
  #
93
93
  # @return [Logger, nil]
94
94
  # @example
@@ -100,22 +100,6 @@ module Recurly
100
100
  # Recurly.logger = nil # Or Recurly.logger = Logger.new nil
101
101
  attr_accessor :logger
102
102
 
103
- def logger=(logger)
104
- if ENV['RECURLY_INSECURE_DEBUG'].to_s.downcase == 'true'
105
- @logger = logger
106
- puts <<-MSG
107
- [WARNING] Recurly logger enabled. The logger has the potential to leak
108
- PII and should never be used in production environments.
109
- MSG
110
- else
111
- puts <<-MSG
112
- [WARNING] Recurly logger has been disabled. If you wish to use it,
113
- only do so in a non-production environment and make sure
114
- the `RECURLY_INSECURE_DEBUG` environment variable is set to `true`.
115
- MSG
116
- end
117
- end
118
-
119
103
  # Convenience logging method includes a Logger#progname dynamically.
120
104
  # @return [true, nil]
121
105
  def log level, message
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.12.2
4
+ version: 2.13.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-09 00:00:00.000000000 Z
11
+ date: 2018-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 2.3.2
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: yard
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -159,11 +173,13 @@ files:
159
173
  - lib/recurly/api/net_http_adapter.rb
160
174
  - lib/recurly/billing_info.rb
161
175
  - lib/recurly/coupon.rb
176
+ - lib/recurly/credit_payment.rb
162
177
  - lib/recurly/delivery.rb
163
178
  - lib/recurly/error.rb
164
179
  - lib/recurly/gift_card.rb
165
180
  - lib/recurly/helper.rb
166
181
  - lib/recurly/invoice.rb
182
+ - lib/recurly/invoice_collection.rb
167
183
  - lib/recurly/js.rb
168
184
  - lib/recurly/juris_detail.rb
169
185
  - lib/recurly/measured_unit.rb
@@ -199,6 +215,7 @@ files:
199
215
  - lib/recurly/webhook/new_dunning_event_notification.rb
200
216
  - lib/recurly/webhook/new_invoice_notification.rb
201
217
  - lib/recurly/webhook/new_subscription_notification.rb
218
+ - lib/recurly/webhook/new_usage_notification.rb
202
219
  - lib/recurly/webhook/notification.rb
203
220
  - lib/recurly/webhook/past_due_invoice_notification.rb
204
221
  - lib/recurly/webhook/processing_invoice_notification.rb
@@ -238,7 +255,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
238
255
  version: '0'
239
256
  requirements: []
240
257
  rubyforge_project:
241
- rubygems_version: 2.7.6
258
+ rubygems_version: 2.6.13
242
259
  signing_key:
243
260
  specification_version: 4
244
261
  summary: Recurly API Client