recurly 2.1.5 → 2.1.7
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of recurly might be problematic. Click here for more details.
- data/README.markdown +5 -12
- data/lib/ecurly.rb +1 -0
- data/lib/recurly.rb +18 -17
- data/lib/recurly/add_on.rb +1 -0
- data/lib/recurly/invoice.rb +4 -1
- data/lib/recurly/js.rb +1 -0
- data/lib/recurly/money.rb +16 -3
- data/lib/recurly/redemption.rb +1 -0
- data/lib/recurly/resource.rb +36 -31
- data/lib/recurly/resource/errors.rb +20 -0
- data/lib/recurly/subscription.rb +1 -1
- data/lib/recurly/subscription/add_ons.rb +14 -12
- data/lib/recurly/subscription_add_on.rb +36 -0
- data/lib/recurly/transaction.rb +6 -3
- data/lib/recurly/transaction/errors.rb +5 -0
- data/lib/recurly/version.rb +1 -1
- data/lib/recurly/xml.rb +6 -3
- data/lib/recurly/xml/nokogiri.rb +1 -1
- metadata +21 -38
data/README.markdown
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
# Recurly
|
1
|
+
# Recurly [![Build Status](https://secure.travis-ci.org/recurly/recurly-client-ruby.png)](http://travis-ci.org/recurly/recurly-client-ruby)
|
2
2
|
|
3
|
-
<
|
3
|
+
<https://github.com/recurly/recurly-client-ruby>
|
4
4
|
|
5
5
|
[Recurly](http://recurly.com/)'s Ruby client library is an interface to its
|
6
6
|
[REST API](http://docs.recurly.com/api/basics).
|
@@ -35,9 +35,8 @@ Recurly.api_key = ENV['RECURLY_API_KEY']
|
|
35
35
|
Recurly.js.private_key = ENV['RECURLY_JS_PRIVATE_KEY']
|
36
36
|
```
|
37
37
|
|
38
|
-
Configure the client library with
|
39
|
-
|
40
|
-
with your Recurly subdomain).
|
38
|
+
Configure the client library with
|
39
|
+
[your API credentials](https://app.recurly.com/go/developer/api_access).
|
41
40
|
|
42
41
|
The default currency is USD. To override with a different code:
|
43
42
|
|
@@ -97,12 +96,6 @@ To run the suite using Nokogiri:
|
|
97
96
|
$ XML=nokogiri bundle exec rake
|
98
97
|
```
|
99
98
|
|
100
|
-
Or, if [Guard](https://github.com/guard/guard) is more your speed:
|
101
|
-
|
102
|
-
``` bash
|
103
|
-
$ bundle exec guard
|
104
|
-
```
|
105
|
-
|
106
99
|
If you plan on submitting a patch, please write tests for it (we use
|
107
100
|
[MiniTest::Spec](http://bfts.rubyforge.org/minitest/MiniTest/Expectations.html)).
|
108
101
|
|
@@ -114,7 +107,7 @@ your changes.
|
|
114
107
|
|
115
108
|
(The MIT License.)
|
116
109
|
|
117
|
-
©
|
110
|
+
© 2009–2013 Recurly Inc.
|
118
111
|
|
119
112
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
120
113
|
of this software and associated documentation files (the "Software"), to deal
|
data/lib/ecurly.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'recurly'
|
data/lib/recurly.rb
CHANGED
@@ -1,22 +1,23 @@
|
|
1
1
|
# Recurly is a Ruby client for Recurly's REST API.
|
2
2
|
module Recurly
|
3
|
-
autoload :Account,
|
4
|
-
autoload :AddOn,
|
5
|
-
autoload :Adjustment,
|
6
|
-
autoload :API,
|
7
|
-
autoload :BillingInfo,
|
8
|
-
autoload :Coupon,
|
9
|
-
autoload :Helper,
|
10
|
-
autoload :Invoice,
|
11
|
-
autoload :JS,
|
12
|
-
autoload :Money,
|
13
|
-
autoload :Plan,
|
14
|
-
autoload :Redemption,
|
15
|
-
autoload :Resource,
|
16
|
-
autoload :Subscription,
|
17
|
-
autoload :
|
18
|
-
autoload :
|
19
|
-
autoload :
|
3
|
+
autoload :Account, 'recurly/account'
|
4
|
+
autoload :AddOn, 'recurly/add_on'
|
5
|
+
autoload :Adjustment, 'recurly/adjustment'
|
6
|
+
autoload :API, 'recurly/api'
|
7
|
+
autoload :BillingInfo, 'recurly/billing_info'
|
8
|
+
autoload :Coupon, 'recurly/coupon'
|
9
|
+
autoload :Helper, 'recurly/helper'
|
10
|
+
autoload :Invoice, 'recurly/invoice'
|
11
|
+
autoload :JS, 'recurly/js'
|
12
|
+
autoload :Money, 'recurly/money'
|
13
|
+
autoload :Plan, 'recurly/plan'
|
14
|
+
autoload :Redemption, 'recurly/redemption'
|
15
|
+
autoload :Resource, 'recurly/resource'
|
16
|
+
autoload :Subscription, 'recurly/subscription'
|
17
|
+
autoload :SubscriptionAddOn, 'recurly/subscription_add_on'
|
18
|
+
autoload :Transaction, 'recurly/transaction'
|
19
|
+
autoload :Version, 'recurly/version'
|
20
|
+
autoload :XML, 'recurly/xml'
|
20
21
|
|
21
22
|
# The exception class from which all Recurly exceptions inherit.
|
22
23
|
class Error < StandardError
|
data/lib/recurly/add_on.rb
CHANGED
data/lib/recurly/invoice.rb
CHANGED
@@ -16,6 +16,9 @@ module Recurly
|
|
16
16
|
# @return [Account]
|
17
17
|
belongs_to :account
|
18
18
|
|
19
|
+
# @return [Redemption]
|
20
|
+
has_one :redemption
|
21
|
+
|
19
22
|
define_attribute_methods %w(
|
20
23
|
uuid
|
21
24
|
state
|
@@ -53,7 +56,7 @@ module Recurly
|
|
53
56
|
end
|
54
57
|
|
55
58
|
def pdf
|
56
|
-
find to_param, :format => 'pdf'
|
59
|
+
self.class.find to_param, :format => 'pdf'
|
57
60
|
end
|
58
61
|
|
59
62
|
private
|
data/lib/recurly/js.rb
CHANGED
data/lib/recurly/money.rb
CHANGED
@@ -14,15 +14,28 @@ module Recurly
|
|
14
14
|
# Recurly.default_currency = 'USD'
|
15
15
|
# Recurly::Money.new(49_00) # => #<Recurly::Money USD: 49_00>
|
16
16
|
def initialize currencies = {}
|
17
|
-
@currencies =
|
17
|
+
@currencies = {}
|
18
18
|
|
19
19
|
if currencies.respond_to? :each_pair
|
20
|
-
currencies.each_pair { |key, value|
|
20
|
+
currencies.each_pair { |key, value| self[key] = value }
|
21
|
+
elsif Recurly.default_currency
|
22
|
+
self[Recurly.default_currency] = currencies
|
21
23
|
else
|
22
|
-
|
24
|
+
message = 'expected a Hash'
|
25
|
+
message << ' or Numeric' if Recurly.default_currency
|
26
|
+
message << " but received #{currencies.class}"
|
27
|
+
raise ArgumentError, message
|
23
28
|
end
|
24
29
|
end
|
25
30
|
|
31
|
+
def [] code
|
32
|
+
currencies[code.to_s]
|
33
|
+
end
|
34
|
+
|
35
|
+
def []= code, amount
|
36
|
+
currencies[code.to_s] = amount
|
37
|
+
end
|
38
|
+
|
26
39
|
# @return [Hash] A hash of currency codes to amounts.
|
27
40
|
def to_hash
|
28
41
|
currencies.dup
|
data/lib/recurly/redemption.rb
CHANGED
data/lib/recurly/resource.rb
CHANGED
@@ -113,7 +113,8 @@ module Recurly
|
|
113
113
|
#
|
114
114
|
# Account.find_each { |account| p account }
|
115
115
|
class Resource
|
116
|
-
autoload :
|
116
|
+
autoload :Errors, 'recurly/resource/errors'
|
117
|
+
autoload :Pager, 'recurly/resource/pager'
|
117
118
|
|
118
119
|
# Raised when a record cannot be found.
|
119
120
|
#
|
@@ -256,6 +257,11 @@ module Recurly
|
|
256
257
|
@scopes ||= Recurly::Helper.hash_with_indifferent_read_access
|
257
258
|
end
|
258
259
|
|
260
|
+
# @return [Module] Module of scopes methods.
|
261
|
+
def scopes_helper
|
262
|
+
@scopes_helper ||= Module.new.tap { |helper| extend helper }
|
263
|
+
end
|
264
|
+
|
259
265
|
# Defines a new resource scope.
|
260
266
|
#
|
261
267
|
# @return [Proc]
|
@@ -263,8 +269,7 @@ module Recurly
|
|
263
269
|
# @param [Hash] params the scope params
|
264
270
|
def scope name, params = {}
|
265
271
|
scopes[name = name.to_s] = params
|
266
|
-
|
267
|
-
self::Scopes.send(:define_method, name) { paginate scopes[name] }
|
272
|
+
scopes_helper.send(:define_method, name) { paginate scopes[name] }
|
268
273
|
end
|
269
274
|
|
270
275
|
# Iterates through every record by automatically paging.
|
@@ -367,7 +372,7 @@ module Recurly
|
|
367
372
|
# @see from_response
|
368
373
|
def from_xml xml
|
369
374
|
xml = XML.new xml
|
370
|
-
if xml.name == member_name
|
375
|
+
if self != Resource || xml.name == member_name
|
371
376
|
record = new
|
372
377
|
elsif Recurly.const_defined?(
|
373
378
|
class_name = Helper.classify(xml.name), false
|
@@ -426,13 +431,13 @@ module Recurly
|
|
426
431
|
|
427
432
|
# @return [Hash] A list of association names for the current class.
|
428
433
|
def associations
|
429
|
-
@associations ||=
|
430
|
-
|
431
|
-
|
432
|
-
|
434
|
+
@associations ||= {
|
435
|
+
:has_many => [], :has_one => [], :belongs_to => []
|
436
|
+
}
|
437
|
+
end
|
433
438
|
|
434
|
-
|
435
|
-
|
439
|
+
def associations_helper
|
440
|
+
@associations_helper ||= Module.new.tap { |helper| include helper }
|
436
441
|
end
|
437
442
|
|
438
443
|
# Establishes a has_many association.
|
@@ -443,16 +448,16 @@ module Recurly
|
|
443
448
|
# @option options [true, false] :readonly Don't define a setter.
|
444
449
|
def has_many collection_name, options = {}
|
445
450
|
associations[:has_many] << collection_name.to_s
|
446
|
-
|
447
|
-
define_method
|
451
|
+
associations_helper.module_eval do
|
452
|
+
define_method collection_name do
|
448
453
|
self[collection_name] ||= []
|
449
|
-
|
454
|
+
end
|
450
455
|
if options.key?(:readonly) && options[:readonly] == false
|
451
|
-
define_method
|
456
|
+
define_method "#{collection_name}=" do |collection|
|
452
457
|
self[collection_name] = collection
|
453
|
-
|
458
|
+
end
|
454
459
|
end
|
455
|
-
|
460
|
+
end
|
456
461
|
end
|
457
462
|
|
458
463
|
# Establishes a has_one association.
|
@@ -463,11 +468,11 @@ module Recurly
|
|
463
468
|
# @option options [true, false] :readonly Don't define a setter.
|
464
469
|
def has_one member_name, options = {}
|
465
470
|
associations[:has_one] << member_name.to_s
|
466
|
-
|
471
|
+
associations_helper.module_eval do
|
467
472
|
define_method(member_name) { self[member_name] }
|
468
473
|
if options.key?(:readonly) && options[:readonly] == false
|
469
474
|
associated = Recurly.const_get Helper.classify(member_name), false
|
470
|
-
define_method
|
475
|
+
define_method "#{member_name}=" do |member|
|
471
476
|
associated_uri = "#{path}/#{member_name}"
|
472
477
|
self[member_name] = case member
|
473
478
|
when Hash
|
@@ -477,18 +482,18 @@ module Recurly
|
|
477
482
|
else
|
478
483
|
raise ArgumentError, "expected #{associated}"
|
479
484
|
end
|
480
|
-
|
481
|
-
define_method
|
485
|
+
end
|
486
|
+
define_method "build_#{member_name}" do |*args|
|
482
487
|
attributes = args.shift || {}
|
483
488
|
self[member_name] = associated.send(
|
484
489
|
:new, attributes.merge(:uri => "#{path}/#{member_name}")
|
485
490
|
).tap { |child| child.attributes[self.class.member_name] = self }
|
486
|
-
|
487
|
-
define_method
|
491
|
+
end
|
492
|
+
define_method "create_#{member_name}" do |*args|
|
488
493
|
send("build_#{member_name}", *args).tap { |child| child.save }
|
489
|
-
|
494
|
+
end
|
490
495
|
end
|
491
|
-
|
496
|
+
end
|
492
497
|
end
|
493
498
|
|
494
499
|
# Establishes a belongs_to association.
|
@@ -496,14 +501,14 @@ module Recurly
|
|
496
501
|
# @return [Proc]
|
497
502
|
def belongs_to parent_name, options = {}
|
498
503
|
associations[:belongs_to] << parent_name.to_s
|
499
|
-
|
504
|
+
associations_helper.module_eval do
|
500
505
|
define_method(parent_name) { self[parent_name] }
|
501
506
|
if options.key?(:readonly) && options[:readonly] == false
|
502
|
-
define_method
|
507
|
+
define_method "#{parent_name}=" do |parent|
|
503
508
|
self[parent_name] = parent
|
504
|
-
|
509
|
+
end
|
505
510
|
end
|
506
|
-
|
511
|
+
end
|
507
512
|
end
|
508
513
|
|
509
514
|
# @return [:has_many, :has_one, :belongs_to, nil] An association type.
|
@@ -658,7 +663,7 @@ module Recurly
|
|
658
663
|
if self.class.associations.values.flatten.include? key
|
659
664
|
value = fetch_association key, value
|
660
665
|
# FIXME: More explicit; less magic.
|
661
|
-
elsif key.end_with?('_in_cents') && !respond_to?(:currency)
|
666
|
+
elsif value && key.end_with?('_in_cents') && !respond_to?(:currency)
|
662
667
|
value = Money.new value unless value.is_a? Money
|
663
668
|
end
|
664
669
|
|
@@ -761,7 +766,7 @@ module Recurly
|
|
761
766
|
# account.valid? # => true
|
762
767
|
def valid?
|
763
768
|
return true if persisted? && changed_attributes.empty?
|
764
|
-
return if
|
769
|
+
return if errors.empty? && changed_attributes?
|
765
770
|
errors.empty?
|
766
771
|
end
|
767
772
|
|
@@ -799,7 +804,7 @@ module Recurly
|
|
799
804
|
# account.errors # => {"account_code"=>["can't be blank"]}
|
800
805
|
# account.errors[:account_code] # => ["can't be blank"]
|
801
806
|
def errors
|
802
|
-
@errors ||=
|
807
|
+
@errors ||= Errors.new
|
803
808
|
end
|
804
809
|
|
805
810
|
# Marks a record as persisted, i.e. not a new or deleted record, resetting
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Recurly
|
2
|
+
class Resource
|
3
|
+
class Errors < Hash
|
4
|
+
def [] key
|
5
|
+
super key.to_s
|
6
|
+
end
|
7
|
+
|
8
|
+
def []= key, value
|
9
|
+
super key.to_s, value
|
10
|
+
end
|
11
|
+
|
12
|
+
def full_messages
|
13
|
+
map { |attribute, messages|
|
14
|
+
attribute_name = attribute.capitalize.gsub('_', ' ')
|
15
|
+
messages.map { |message| "#{attribute_name} #{message}." }
|
16
|
+
}.flatten
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/recurly/subscription.rb
CHANGED
@@ -2,7 +2,7 @@ module Recurly
|
|
2
2
|
class Subscription < Resource
|
3
3
|
class AddOns
|
4
4
|
instance_methods.each do |method|
|
5
|
-
undef_method method if method !~ /^__|^(object_id|respond_to\?|send)$/
|
5
|
+
undef_method method if method !~ /^__|^(object_id|respond_to\?|send)$/
|
6
6
|
end
|
7
7
|
|
8
8
|
# @param subscription [Subscription]
|
@@ -23,35 +23,37 @@ module Recurly
|
|
23
23
|
# {:add_on_code => "BONUS"}
|
24
24
|
# ]
|
25
25
|
def << add_on
|
26
|
-
|
27
|
-
when AddOn then add_on = { :add_on_code => add_on.add_on_code }
|
28
|
-
when String, Symbol then add_on = { :add_on_code => add_on.to_s }
|
29
|
-
end
|
30
|
-
add_on = Helper.hash_with_indifferent_read_access add_on
|
26
|
+
add_on = SubscriptionAddOn.new(add_on, @subscription)
|
31
27
|
|
32
|
-
exist = @add_ons.find { |a| a
|
28
|
+
exist = @add_ons.find { |a| a.add_on_code == add_on.add_on_code }
|
33
29
|
if exist
|
34
|
-
exist
|
30
|
+
exist.quantity ||= 1 and exist.quantity += 1
|
35
31
|
|
36
|
-
if add_on
|
37
|
-
exist
|
32
|
+
if add_on.unit_amount_in_cents
|
33
|
+
exist.unit_amount_in_cents = add_on.unit_amount_in_cents
|
38
34
|
end
|
39
35
|
else
|
40
36
|
@add_ons << add_on
|
41
37
|
end
|
42
38
|
|
43
|
-
|
39
|
+
self
|
44
40
|
end
|
45
41
|
|
46
42
|
def to_a
|
47
43
|
@add_ons.dup
|
48
44
|
end
|
49
45
|
|
46
|
+
def errors
|
47
|
+
@add_ons.map { |add_on| add_on.errors }
|
48
|
+
end
|
49
|
+
|
50
50
|
def to_xml options = {}
|
51
51
|
builder = options[:builder] || XML.new('<subscription_add_ons/>')
|
52
52
|
@add_ons.each do |add_on|
|
53
53
|
node = builder.add_element 'subscription_add_on'
|
54
|
-
add_on.each_pair
|
54
|
+
add_on.attributes.each_pair do |k, v|
|
55
|
+
node.add_element k.to_s, v if v
|
56
|
+
end
|
55
57
|
end
|
56
58
|
builder.to_s
|
57
59
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Recurly
|
2
|
+
class SubscriptionAddOn < Resource
|
3
|
+
define_attribute_methods %w(
|
4
|
+
add_on_code
|
5
|
+
quantity
|
6
|
+
unit_amount_in_cents
|
7
|
+
)
|
8
|
+
|
9
|
+
attr_reader :subscription
|
10
|
+
|
11
|
+
def initialize add_on = nil, subscription = nil
|
12
|
+
super()
|
13
|
+
|
14
|
+
case add_on
|
15
|
+
when AddOn, SubscriptionAddOn
|
16
|
+
self.add_on_code = add_on.add_on_code
|
17
|
+
self.quantity = add_on.quantity
|
18
|
+
if add_on.unit_amount_in_cents
|
19
|
+
self.unit_amount_in_cents = add_on.unit_amount_in_cents.to_i
|
20
|
+
end
|
21
|
+
when Hash
|
22
|
+
self.attributes = add_on
|
23
|
+
when String, Symbol
|
24
|
+
self.add_on_code = add_on
|
25
|
+
end
|
26
|
+
|
27
|
+
self.add_on_code = add_on_code.to_s
|
28
|
+
|
29
|
+
@subscription = subscription
|
30
|
+
end
|
31
|
+
|
32
|
+
def currency
|
33
|
+
subscription.currency if subscription
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/recurly/transaction.rb
CHANGED
@@ -37,6 +37,7 @@ module Recurly
|
|
37
37
|
avs_result_street
|
38
38
|
created_at
|
39
39
|
details
|
40
|
+
transaction_error
|
40
41
|
)
|
41
42
|
alias to_param uuid
|
42
43
|
|
@@ -60,16 +61,18 @@ module Recurly
|
|
60
61
|
|
61
62
|
# Refunds the transaction.
|
62
63
|
#
|
63
|
-
# @return [Transaction, false] The
|
64
|
+
# @return [Transaction, false] The updated original transaction if voided,
|
65
|
+
# a new refund transaction, false if the transaction isn't voidable or
|
66
|
+
# refundable.
|
64
67
|
# @raise [Error] If the refund fails.
|
65
68
|
# @param amount_in_cents [Integer, nil] The amount (in cents) to refund
|
66
69
|
# (refunds fully if nil).
|
67
|
-
# @see Transaction#void
|
68
70
|
def refund amount_in_cents = nil
|
69
71
|
return false unless self[:refund]
|
70
|
-
self.class.from_response(
|
72
|
+
refund = self.class.from_response(
|
71
73
|
self[:refund].call :params => { :amount_in_cents => amount_in_cents }
|
72
74
|
)
|
75
|
+
refund.uuid == uuid ? copy_from(refund) && self : refund
|
73
76
|
end
|
74
77
|
|
75
78
|
def signable_attributes
|
@@ -39,6 +39,11 @@ module Recurly
|
|
39
39
|
xml.text '/errors/transaction_error/customer_message'
|
40
40
|
end
|
41
41
|
|
42
|
+
# @return [String] The transaction error code.
|
43
|
+
def transaction_error_code
|
44
|
+
xml.text '/errors/transaction_error/error_code'
|
45
|
+
end
|
46
|
+
|
42
47
|
private
|
43
48
|
|
44
49
|
def update_transaction transaction
|
data/lib/recurly/version.rb
CHANGED
data/lib/recurly/xml.rb
CHANGED
@@ -17,9 +17,12 @@ module Recurly
|
|
17
17
|
when 'integer' then el.text.to_i
|
18
18
|
else
|
19
19
|
# FIXME: Move some of this logic to Resource.from_xml?
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
[el.name, type].each do |name|
|
21
|
+
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
|
+
end
|
23
26
|
end
|
24
27
|
if el.elements.empty?
|
25
28
|
el.text
|
data/lib/recurly/xml/nokogiri.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: recurly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-02-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,62 +21,44 @@ dependencies:
|
|
21
21
|
version: 0.9.2
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
|
-
name: minitest
|
27
|
-
requirement: &70247119507140 !ruby/object:Gem::Requirement
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
25
|
none: false
|
29
26
|
requirements:
|
30
27
|
- - ~>
|
31
28
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
33
|
-
type: :development
|
34
|
-
prerelease: false
|
35
|
-
version_requirements: *70247119507140
|
29
|
+
version: 0.9.2
|
36
30
|
- !ruby/object:Gem::Dependency
|
37
|
-
name:
|
38
|
-
requirement:
|
31
|
+
name: minitest
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
39
33
|
none: false
|
40
34
|
requirements:
|
41
35
|
- - ~>
|
42
36
|
- !ruby/object:Gem::Version
|
43
|
-
version:
|
37
|
+
version: 2.6.1
|
44
38
|
type: :development
|
45
39
|
prerelease: false
|
46
|
-
version_requirements:
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: guard-minitest
|
49
|
-
requirement: &70247119506220 !ruby/object:Gem::Requirement
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
41
|
none: false
|
51
42
|
requirements:
|
52
43
|
- - ~>
|
53
44
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
55
|
-
type: :development
|
56
|
-
prerelease: false
|
57
|
-
version_requirements: *70247119506220
|
45
|
+
version: 2.6.1
|
58
46
|
- !ruby/object:Gem::Dependency
|
59
|
-
name:
|
60
|
-
requirement:
|
47
|
+
name: webmock
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
61
49
|
none: false
|
62
50
|
requirements:
|
63
51
|
- - ~>
|
64
52
|
- !ruby/object:Gem::Version
|
65
|
-
version:
|
53
|
+
version: 1.7.6
|
66
54
|
type: :development
|
67
55
|
prerelease: false
|
68
|
-
version_requirements:
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: growl_notify
|
71
|
-
requirement: &70247119505300 !ruby/object:Gem::Requirement
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
72
57
|
none: false
|
73
58
|
requirements:
|
74
59
|
- - ~>
|
75
60
|
- !ruby/object:Gem::Version
|
76
|
-
version:
|
77
|
-
type: :development
|
78
|
-
prerelease: false
|
79
|
-
version_requirements: *70247119505300
|
61
|
+
version: 1.7.6
|
80
62
|
description: ! 'An API client library for Recurly: http://recurly.com'
|
81
63
|
email: support@recurly.com
|
82
64
|
executables:
|
@@ -85,6 +67,7 @@ extensions: []
|
|
85
67
|
extra_rdoc_files:
|
86
68
|
- README.markdown
|
87
69
|
files:
|
70
|
+
- lib/ecurly.rb
|
88
71
|
- lib/rails/generators/recurly/config_generator.rb
|
89
72
|
- lib/rails/recurly.rb
|
90
73
|
- lib/recurly/account.rb
|
@@ -102,10 +85,12 @@ files:
|
|
102
85
|
- lib/recurly/money.rb
|
103
86
|
- lib/recurly/plan.rb
|
104
87
|
- lib/recurly/redemption.rb
|
88
|
+
- lib/recurly/resource/errors.rb
|
105
89
|
- lib/recurly/resource/pager.rb
|
106
90
|
- lib/recurly/resource.rb
|
107
91
|
- lib/recurly/subscription/add_ons.rb
|
108
92
|
- lib/recurly/subscription.rb
|
93
|
+
- lib/recurly/subscription_add_on.rb
|
109
94
|
- lib/recurly/transaction/errors.rb
|
110
95
|
- lib/recurly/transaction.rb
|
111
96
|
- lib/recurly/version.rb
|
@@ -114,9 +99,8 @@ files:
|
|
114
99
|
- lib/recurly/xml.rb
|
115
100
|
- lib/recurly.rb
|
116
101
|
- README.markdown
|
117
|
-
-
|
118
|
-
|
119
|
-
homepage: http://github.com/recurly/recurly-client-ruby
|
102
|
+
- bin/recurly
|
103
|
+
homepage: https://github.com/recurly/recurly-client-ruby
|
120
104
|
licenses:
|
121
105
|
- MIT
|
122
106
|
post_install_message:
|
@@ -139,9 +123,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
139
123
|
version: '0'
|
140
124
|
requirements: []
|
141
125
|
rubyforge_project:
|
142
|
-
rubygems_version: 1.8.
|
126
|
+
rubygems_version: 1.8.23
|
143
127
|
signing_key:
|
144
128
|
specification_version: 3
|
145
129
|
summary: Recurly API Client
|
146
130
|
test_files: []
|
147
|
-
has_rdoc: true
|