recurly 2.14.1 → 2.15.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: c8e60038f1fbb3762105225c21991eeeb0c87d6d90c6ed6f024dda9c95369a41
4
- data.tar.gz: c8a792a38f9faffc340abf9370f2646303bb467b8034422f6e796f119beab148
2
+ SHA1:
3
+ metadata.gz: 79a20ab75b4ef516202e7be58e66ae30cd07d3e4
4
+ data.tar.gz: 1ed091b912940dfa9868139668b6f2d8b2c290d2
5
5
  SHA512:
6
- metadata.gz: e7f8d7e9cc69df1ceda438557e90be530f1691ce413458f78da5d06cd19780d2986cece301672f6a6937f25fa01f59ed59f8369623897ea0313afd4ca7758f58
7
- data.tar.gz: '093ba8354e1a54df6f5f3bb91c13df07c58086f010a7df24a9d4b8e42627ce24459499fc9aa32c98bc8dc126c699d5d69b7fa5a97b717ae00398000937e9cb6a'
6
+ metadata.gz: a3b448e8c15ee9731c1f20209645f14937c3deb9baf7a950ccc57f9c90c83dfe5263c66ca120686912f97d4006562bc45cc392a476e51ea908c622970b0920ad
7
+ data.tar.gz: 821dcb4d1ec270a673ccd781312445e478520dd2994895435c71cb5d743eb30f2bfa9e9c010ab6765eb34412956f0b90d73840aa5324a3d1e9b26cb59239edb3
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.14.0'
17
+ gem 'recurly', '~> 2.15.0'
18
18
  ```
19
19
 
20
20
  Recurly will automatically use [Nokogiri](http://nokogiri.org/) (for a nice
@@ -89,8 +89,6 @@ module Recurly
89
89
  end
90
90
 
91
91
  # Assigns a logger to log requests/responses and more.
92
- # The logger can only be set if the environment variable
93
- # `RECURLY_INSECURE_DEBUG` equals `true`.
94
92
  #
95
93
  # @return [Logger, nil]
96
94
  # @example
@@ -102,22 +100,6 @@ module Recurly
102
100
  # Recurly.logger = nil # Or Recurly.logger = Logger.new nil
103
101
  attr_accessor :logger
104
102
 
105
- def logger=(logger)
106
- if ENV['RECURLY_INSECURE_DEBUG'].to_s.downcase == 'true'
107
- @logger = logger
108
- puts <<-MSG
109
- [WARNING] Recurly logger enabled. The logger has the potential to leak
110
- PII and should never be used in production environments.
111
- MSG
112
- else
113
- puts <<-MSG
114
- [WARNING] Recurly logger has been disabled. If you wish to use it,
115
- only do so in a non-production environment and make sure
116
- the `RECURLY_INSECURE_DEBUG` environment variable is set to `true`.
117
- MSG
118
- end
119
- end
120
-
121
103
  # Convenience logging method includes a Logger#progname dynamically.
122
104
  # @return [true, nil]
123
105
  def log level, message
@@ -25,6 +25,7 @@ module Recurly
25
25
  updated_at
26
26
  canceled_at
27
27
  )
28
+ alias to_param id
28
29
 
29
30
  # Preview a GiftCard given some attributes
30
31
  #
@@ -164,28 +164,28 @@ module Recurly
164
164
 
165
165
  # Refunds specific line items on the invoice.
166
166
  #
167
- # @return [InvoiceCollection, false] A new refund invoice, false if the invoice isn't
167
+ # @return [Invoice, false] Invoice if successful, false if the invoice isn't
168
168
  # refundable.
169
169
  # @raise [Error] If the refund fails.
170
170
  # @param line_items [Array, nil] An array of line items to refund.
171
171
  # @param refund_method ["credit_first", "transaction_first"] The method used to refund.
172
172
  def refund(line_items = nil, refund_method = 'credit_first')
173
173
  return false unless link? :refund
174
- InvoiceCollection.from_response(
174
+ self.class.from_response(
175
175
  follow_link :refund, :body => refund_line_items_to_xml(line_items, refund_method)
176
176
  )
177
177
  end
178
178
 
179
179
  # Refunds the invoice for a specific amount.
180
180
  #
181
- # @return [Invoice, false] A new refund invoice, false if the invoice isn't
181
+ # @return [Invoice, false] Invoice if successful, false if the invoice isn't
182
182
  # refundable.
183
183
  # @raise [Error] If the refund fails.
184
184
  # @param amount_in_cents [Integer, nil] The amount (in cents) to refund.
185
185
  # @param refund_method ["credit_first", "transaction_first"] The method used to refund.
186
186
  def refund_amount amount_in_cents = nil, refund_method = 'credit_first'
187
187
  return false unless link? :refund
188
- InvoiceCollection.from_response(
188
+ self.class.from_response(
189
189
  follow_link :refund, :body => refund_amount_to_xml(amount_in_cents, refund_method)
190
190
  )
191
191
  end
@@ -285,14 +285,24 @@ module Recurly
285
285
 
286
286
  # Iterates through every record by automatically paging.
287
287
  #
288
+ # @option options [Hash] Optional hash to pass to Pager#paginate
289
+ #
288
290
  # @return [nil]
289
291
  # @param [Integer] per_page The number of records returned per request.
290
292
  # @yield [record]
291
- # @see Pager#find_each
293
+ # @see Pager#paginate
292
294
  # @example
293
295
  # Recurly::Account.find_each { |a| p a }
294
- def find_each(per_page = 50, &block)
295
- paginate(:per_page => per_page).find_each(&block)
296
+ # @example With sorting and filter
297
+ # opts = {
298
+ # begin_time: DateTime.new(2016,1,1),
299
+ # sort: :updated_at
300
+ # }
301
+ # Recurly::Account.find_each(opts) do |a|
302
+ # puts a.inspect
303
+ # end
304
+ def find_each(options = {}, &block)
305
+ paginate(options).find_each(&block)
296
306
  end
297
307
 
298
308
  # @return [Integer] The total record count of the resource in question.
@@ -20,6 +20,34 @@ module Recurly
20
20
  #
21
21
  # account.transactions.new(attributes) # or #create, or #create!
22
22
  # # => #<Recurly::Transaction ...>
23
+ #
24
+ # account.transactions.find_each do |transaction|
25
+ # puts transaction
26
+ # end
27
+ # @example Iterate through a page of invoices at a time
28
+ # opts = {
29
+ # order: :desc,
30
+ # state: :collected
31
+ # }
32
+ # invoices = Recurly::Invoice.paginate(opts)
33
+ # begin
34
+ # invoices.each do |invoice|
35
+ # puts invoice.invoice_number
36
+ # end
37
+ # puts "fetching next page..."
38
+ # end while invoices.next
39
+ # @example Passing sorting and filtering parameters
40
+ # opts = {
41
+ # begin_time: DateTime.new(2016,1,1),
42
+ # end_time: DateTime.new(2017,1,1),
43
+ # sort: :updated_at,
44
+ # order: :desc,
45
+ # state: :collected
46
+ # }
47
+ # Recurly::Invoice.find_each(opts) do |invoice|
48
+ # puts invoice
49
+ # end
50
+ #
23
51
  class Pager
24
52
  include Enumerable
25
53
 
@@ -68,6 +96,13 @@ module Recurly
68
96
  @collection = nil
69
97
  end
70
98
 
99
+ # This will tell you if there are any associated resources
100
+ # on the server by checking the presence of a link in the xml
101
+ #
102
+ # @example
103
+ # # if <invoices href="..." /> is present, will return true
104
+ # account.invoices.any?
105
+ # #=> true
71
106
  # @return [Boolean] whether or not the xml element is present
72
107
  def any?
73
108
  !@uri.nil?
@@ -78,6 +113,17 @@ module Recurly
78
113
  @uri ||= resource_class.collection_path
79
114
  end
80
115
 
116
+ # Calls the server to get the count of server side resources.
117
+ #
118
+ # @example Count collected invoices in 2016
119
+ # opts = {
120
+ # begin_time: DateTime.new(2016,1,1),
121
+ # end_time: DateTime.new(2017,1,1),
122
+ # state: :collected
123
+ # }
124
+ # count = Recurly::Invoice.paginate(opts).count
125
+ # #=> 42
126
+ #
81
127
  # @return [Integer] The total record count of the resource in question.
82
128
  # @see Resource.count
83
129
  def count
@@ -127,12 +173,25 @@ module Recurly
127
173
  end
128
174
  alias reload load!
129
175
 
176
+
130
177
  # @return [Pager] Duplicates the pager, updating it with the options
131
178
  # supplied. Useful for resource scopes.
132
- # @see #initialize
179
+ # @option options [String, Symbol] :sort The attribute that will be used to order
180
+ # records: <tt>created_at</tt>, <tt>updated_at</tt>. Defaults to <tt>created_at</tt>.
181
+ # @option options [String, Symbol] :order The order in which records will be
182
+ # returned: <tt>asc</tt> for ascending order, <tt>desc</tt> for descending order.
183
+ # Defaults to <tt>desc</tt>.
184
+ # @option options [DateTime, String] :begin_time Operates on the attribute specified by the
185
+ # <tt>sort</tt> parameter. Filters records to only include those with datetimes
186
+ # greater than or equal to the supplied datetime. Accepts an ISO 8601
187
+ # date or date and time.
188
+ # @option options [DateTime, String] :end_time Operates on the attribute specified by
189
+ # the <tt>sort</tt> parameter. Filters records to only include those with
190
+ # datetimes less than or equal to the supplied datetime. Accepts an
191
+ # ISO 8601 date or date and time.
133
192
  # @example
134
- # Recurly::Account.active.paginate :per_page => 20
135
- def paginate options = {}
193
+ # Recurly::Account.paginate(sort: :updated_at, per_page: 20)
194
+ def paginate(options = {})
136
195
  dup.instance_eval {
137
196
  @collection = @etag = nil
138
197
  @options = @options.merge options
@@ -1,8 +1,8 @@
1
1
  module Recurly
2
2
  module Version
3
3
  MAJOR = 2
4
- MINOR = 14
5
- PATCH = 1
4
+ MINOR = 15
5
+ PATCH = 0
6
6
  PRE = nil
7
7
 
8
8
  VERSION = [MAJOR, MINOR, PATCH, PRE].compact.join('.').freeze
@@ -47,8 +47,11 @@ 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 :GiftCardNotification, 'recurly/webhook/gift_card_notification'
51
+ autoload :PurchasedGiftCardNotification, 'recurly/webhook/purchased_gift_card_notification'
52
+ autoload :RedeemedGiftCardNotification, 'recurly/webhook/redeemed_gift_card_notification'
53
+ autoload :UpdatedBalanceGiftCardNotification,'recurly/webhook/updated_balance_gift_card_notification'
50
54
  autoload :NewUsageNotification, 'recurly/webhook/new_usage_notification'
51
-
52
55
  # This exception is raised if the Webhook Notification initialization fails
53
56
  class NotificationError < Error
54
57
  end
@@ -0,0 +1,8 @@
1
+ module Recurly
2
+ module Webhook
3
+ class GiftCardNotification < Notification
4
+ has_one :gift_card
5
+
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ module Recurly
2
+ module Webhook
3
+ class PurchasedGiftCardNotification < GiftCardNotification
4
+
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Recurly
2
+ module Webhook
3
+ class RedeemedGiftCardNotification < GiftCardNotification
4
+
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Recurly
2
+ module Webhook
3
+ class UpdatedBalanceGiftCardNotification < GiftCardNotification
4
+
5
+ end
6
+ end
7
+ end
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.14.1
4
+ version: 2.15.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-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -210,6 +210,7 @@ files:
210
210
  - lib/recurly/webhook/dunning_notification.rb
211
211
  - lib/recurly/webhook/expired_subscription_notification.rb
212
212
  - lib/recurly/webhook/failed_payment_notification.rb
213
+ - lib/recurly/webhook/gift_card_notification.rb
213
214
  - lib/recurly/webhook/invoice_notification.rb
214
215
  - lib/recurly/webhook/new_account_notification.rb
215
216
  - lib/recurly/webhook/new_dunning_event_notification.rb
@@ -220,7 +221,9 @@ files:
220
221
  - lib/recurly/webhook/past_due_invoice_notification.rb
221
222
  - lib/recurly/webhook/processing_invoice_notification.rb
222
223
  - lib/recurly/webhook/processing_payment_notification.rb
224
+ - lib/recurly/webhook/purchased_gift_card_notification.rb
223
225
  - lib/recurly/webhook/reactivated_account_notification.rb
226
+ - lib/recurly/webhook/redeemed_gift_card_notification.rb
224
227
  - lib/recurly/webhook/renewed_subscription_notification.rb
225
228
  - lib/recurly/webhook/scheduled_payment_notification.rb
226
229
  - lib/recurly/webhook/subscription_notification.rb
@@ -228,6 +231,7 @@ files:
228
231
  - lib/recurly/webhook/successful_refund_notification.rb
229
232
  - lib/recurly/webhook/transaction_notification.rb
230
233
  - lib/recurly/webhook/updated_account_notification.rb
234
+ - lib/recurly/webhook/updated_balance_gift_card_notification.rb
231
235
  - lib/recurly/webhook/updated_subscription_notification.rb
232
236
  - lib/recurly/webhook/void_payment_notification.rb
233
237
  - lib/recurly/xml.rb
@@ -255,7 +259,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
255
259
  version: '0'
256
260
  requirements: []
257
261
  rubyforge_project:
258
- rubygems_version: 2.7.6
262
+ rubygems_version: 2.6.13
259
263
  signing_key:
260
264
  specification_version: 4
261
265
  summary: Recurly API Client