recurly 2.1.12 → 2.2.0
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.
- checksums.yaml +5 -5
- data/README.markdown +3 -3
- data/lib/recurly.rb +0 -18
- data/lib/recurly/account.rb +2 -2
- data/lib/recurly/api.rb +3 -11
- data/lib/recurly/api/net_http_adapter.rb +3 -2
- data/lib/recurly/coupon.rb +2 -2
- data/lib/recurly/invoice.rb +4 -4
- data/lib/recurly/resource.rb +66 -40
- data/lib/recurly/subscription.rb +11 -8
- data/lib/recurly/subscription_add_on.rb +5 -0
- data/lib/recurly/transaction.rb +2 -2
- data/lib/recurly/version.rb +2 -2
- metadata +21 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c791903258f0bd8ba1d9cb2826ec0fb030f119e2
|
4
|
+
data.tar.gz: 9f08ec8700651e5f1301ec295c1582c4600fed48
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 747adc59314fdf0f54576463c186aece07c83a813535bc67c834bdf3370fe3c19de03fe1cb81f72a2300f396df38d26acffb4ceef004be8bf2759b91c81495ba
|
7
|
+
data.tar.gz: cb46b87109a2bd83fcaa46ea562d7c87c373b1a3f178cfcb34078be5a63655e7e344728fb1512a1e7862f2abe5ab1875e6532305671124ae825b5088f583621f
|
data/README.markdown
CHANGED
@@ -12,7 +12,7 @@ Recurly is packaged as a Ruby gem. We recommend you install it with
|
|
12
12
|
[Bundler](http://gembundler.com/) by adding the following line to your Gemfile:
|
13
13
|
|
14
14
|
``` ruby
|
15
|
-
gem 'recurly', '~> 2.
|
15
|
+
gem 'recurly', '~> 2.2.0'
|
16
16
|
```
|
17
17
|
|
18
18
|
Recurly will automatically use [Nokogiri](http://nokogiri.org/) (for a nice
|
@@ -62,7 +62,7 @@ Instructions and examples are available on
|
|
62
62
|
[Recurly's documentation site](http://docs.recurly.com/api/basics).
|
63
63
|
|
64
64
|
Recurly's gem API is available
|
65
|
-
[here](http://rubydoc.info/gems/recurly/2.1.
|
65
|
+
[here](http://rubydoc.info/gems/recurly/2.1.9/frames).
|
66
66
|
|
67
67
|
|
68
68
|
## Contributing
|
@@ -70,7 +70,7 @@ Recurly's gem API is available
|
|
70
70
|
Developing for the Recurly gem is easy with [Bundler](http://gembundler.com/).
|
71
71
|
|
72
72
|
Fork and clone the repository, `cd` into the directory, and, with a Ruby of
|
73
|
-
your choice (1.
|
73
|
+
your choice (1.9.3 or greater), set up your
|
74
74
|
environment.
|
75
75
|
|
76
76
|
If you don't have Bundler installed, install it with the following command:
|
data/lib/recurly.rb
CHANGED
@@ -66,8 +66,6 @@ module Recurly
|
|
66
66
|
end
|
67
67
|
|
68
68
|
# Assigns a logger to log requests/responses and more.
|
69
|
-
# The logger can only be set if the environment variable
|
70
|
-
# `RECURLY_INSECURE_DEBUG` equals `true`.
|
71
69
|
#
|
72
70
|
# @return [Logger, nil]
|
73
71
|
# @example
|
@@ -79,22 +77,6 @@ module Recurly
|
|
79
77
|
# Recurly.logger = nil # Or Recurly.logger = Logger.new nil
|
80
78
|
attr_accessor :logger
|
81
79
|
|
82
|
-
def logger=(logger)
|
83
|
-
if ENV['RECURLY_INSECURE_DEBUG'].to_s.downcase == 'true'
|
84
|
-
@logger = logger
|
85
|
-
puts <<-MSG
|
86
|
-
[WARNING] Recurly logger enabled. The logger has the potential to leak
|
87
|
-
PII and should never be used in production environments.
|
88
|
-
MSG
|
89
|
-
else
|
90
|
-
puts <<-MSG
|
91
|
-
[WARNING] Recurly logger has been disabled. If you wish to use it,
|
92
|
-
only do so in a non-production environment and make sure
|
93
|
-
the `RECURLY_INSECURE_DEBUG` environment variable is set to `true`.
|
94
|
-
MSG
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
80
|
# Convenience logging method includes a Logger#progname dynamically.
|
99
81
|
# @return [true, nil]
|
100
82
|
def log level, message
|
data/lib/recurly/account.rb
CHANGED
@@ -51,8 +51,8 @@ module Recurly
|
|
51
51
|
# (e.g., the account is already opwn), and may raise an exception if the
|
52
52
|
# attempt fails.
|
53
53
|
def reopen
|
54
|
-
return false unless
|
55
|
-
reload
|
54
|
+
return false unless link? :reopen
|
55
|
+
reload follow_link :reopen
|
56
56
|
true
|
57
57
|
end
|
58
58
|
|
data/lib/recurly/api.rb
CHANGED
@@ -15,7 +15,6 @@ module Recurly
|
|
15
15
|
require 'recurly/api/errors'
|
16
16
|
|
17
17
|
@@base_uri = "https://api.recurly.com/v2/"
|
18
|
-
@@valid_domains = [".recurly.com"]
|
19
18
|
|
20
19
|
FORMATS = Helper.hash_with_indifferent_read_access(
|
21
20
|
'pdf' => 'application/pdf',
|
@@ -42,13 +41,13 @@ module Recurly
|
|
42
41
|
# @return [Net::HTTPOK, Net::HTTPResponse]
|
43
42
|
# @raise [ResponseError] With a non-2xx status code.
|
44
43
|
def head uri, params = {}, options = {}
|
45
|
-
request :head, uri, { :params => params }.merge(options)
|
44
|
+
request :head, uri, { :params => params || {} }.merge(options)
|
46
45
|
end
|
47
46
|
|
48
47
|
# @return [Net::HTTPOK, Net::HTTPResponse]
|
49
48
|
# @raise [ResponseError] With a non-2xx status code.
|
50
49
|
def get uri, params = {}, options = {}
|
51
|
-
request :get, uri, { :params => params }.merge(options)
|
50
|
+
request :get, uri, { :params => params || {} }.merge(options)
|
52
51
|
end
|
53
52
|
|
54
53
|
# @return [Net::HTTPCreated, Net::HTTPResponse]
|
@@ -65,7 +64,7 @@ module Recurly
|
|
65
64
|
|
66
65
|
# @return [Net::HTTPNoContent, Net::HTTPResponse]
|
67
66
|
# @raise [ResponseError] With a non-2xx status code.
|
68
|
-
def delete uri, options = {}
|
67
|
+
def delete uri, body = nil, options = {}
|
69
68
|
request :delete, uri, options
|
70
69
|
end
|
71
70
|
|
@@ -74,13 +73,6 @@ module Recurly
|
|
74
73
|
URI.parse @@base_uri.sub('api', Recurly.subdomain)
|
75
74
|
end
|
76
75
|
|
77
|
-
def validate_uri!(uri)
|
78
|
-
domain = @@valid_domains.detect { |d| uri.host.end_with?(d) }
|
79
|
-
unless domain
|
80
|
-
raise ArgumentError, "URI #{uri} is invalid. You may only make requests to a Recurly domain."
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
76
|
# @return [String]
|
85
77
|
def user_agent
|
86
78
|
"Recurly/#{Version}; #{RUBY_DESCRIPTION}"
|
@@ -36,14 +36,13 @@ module Recurly
|
|
36
36
|
head = headers.dup
|
37
37
|
head.update options[:head] if options[:head]
|
38
38
|
head.delete_if { |_, value| value.nil? }
|
39
|
-
uri = base_uri + uri
|
39
|
+
uri = base_uri + URI.escape(uri)
|
40
40
|
if options[:params] && !options[:params].empty?
|
41
41
|
pairs = options[:params].map { |key, value|
|
42
42
|
"#{CGI.escape key.to_s}=#{CGI.escape value.to_s}"
|
43
43
|
}
|
44
44
|
uri += "?#{pairs.join '&'}"
|
45
45
|
end
|
46
|
-
self.validate_uri!(uri)
|
47
46
|
request = METHODS[method].new uri.request_uri, head
|
48
47
|
request.basic_auth(*[Recurly.api_key, nil].flatten[0, 2])
|
49
48
|
if options[:body]
|
@@ -100,6 +99,8 @@ module Recurly
|
|
100
99
|
when 200...300 then response
|
101
100
|
else raise ERRORS[code].new request, response
|
102
101
|
end
|
102
|
+
rescue Errno::ECONNREFUSED => e
|
103
|
+
raise Error, e.message
|
103
104
|
end
|
104
105
|
end
|
105
106
|
end
|
data/lib/recurly/coupon.rb
CHANGED
@@ -51,7 +51,7 @@ module Recurly
|
|
51
51
|
# account = Account.find account_code
|
52
52
|
# coupon.redeem account
|
53
53
|
def redeem account_or_code, currency = nil
|
54
|
-
return false unless
|
54
|
+
return false unless link? :redeem
|
55
55
|
|
56
56
|
account_code = if account_or_code.is_a? Account
|
57
57
|
account_or_code.account_code
|
@@ -59,7 +59,7 @@ module Recurly
|
|
59
59
|
account_or_code
|
60
60
|
end
|
61
61
|
|
62
|
-
Redemption.from_response
|
62
|
+
Redemption.from_response follow_link(:redeem,
|
63
63
|
:body => (redemption = redemptions.new(
|
64
64
|
:account_code => account_code,
|
65
65
|
:currency => currency || Recurly.default_currency
|
data/lib/recurly/invoice.rb
CHANGED
@@ -40,8 +40,8 @@ module Recurly
|
|
40
40
|
# @return [true, false] +true+ when successful, +false+ when unable to
|
41
41
|
# (e.g., the invoice is no longer open).
|
42
42
|
def mark_successful
|
43
|
-
return false unless
|
44
|
-
reload
|
43
|
+
return false unless link? :mark_successful
|
44
|
+
reload follow_link :mark_successful
|
45
45
|
true
|
46
46
|
end
|
47
47
|
|
@@ -50,8 +50,8 @@ module Recurly
|
|
50
50
|
# @return [true, false] +true+ when successful, +false+ when unable to
|
51
51
|
# (e.g., the invoice is no longer open).
|
52
52
|
def mark_failed
|
53
|
-
return false unless
|
54
|
-
reload
|
53
|
+
return false unless link? :mark_failed
|
54
|
+
reload follow_link :mark_failed
|
55
55
|
true
|
56
56
|
end
|
57
57
|
|
data/lib/recurly/resource.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'date'
|
2
|
-
require 'erb'
|
3
2
|
|
4
3
|
module Recurly
|
5
4
|
# The base class for all Recurly resources (e.g. {Account}, {Subscription},
|
@@ -185,7 +184,6 @@ module Recurly
|
|
185
184
|
# Recurly::Account.member_path "code" # => "accounts/code"
|
186
185
|
# Recurly::Account.member_path nil # => "accounts"
|
187
186
|
def member_path uuid
|
188
|
-
uuid = ERB::Util.url_encode(uuid) if uuid
|
189
187
|
[collection_path, uuid].compact.join '/'
|
190
188
|
end
|
191
189
|
|
@@ -321,8 +319,9 @@ module Recurly
|
|
321
319
|
raise NotFound, "can't find a record with nil identifier"
|
322
320
|
end
|
323
321
|
|
322
|
+
uri = uuid =~ /^http/ ? uuid : member_path(uuid)
|
324
323
|
begin
|
325
|
-
from_response API.get(
|
324
|
+
from_response API.get(uri, {}, options)
|
326
325
|
rescue API::NotFound => e
|
327
326
|
raise NotFound, e.description
|
328
327
|
end
|
@@ -394,13 +393,10 @@ module Recurly
|
|
394
393
|
|
395
394
|
xml.each_element do |el|
|
396
395
|
if el.name == 'a'
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
when 'put' then proc { |*opts| API.put uri, nil, *opts }
|
402
|
-
when 'delete' then proc { |*opts| API.delete uri, *opts }
|
403
|
-
end
|
396
|
+
record.links[el.attribute('name').value] = {
|
397
|
+
:method => el.attribute('method').to_s,
|
398
|
+
:href => el.attribute('href').value
|
399
|
+
}
|
404
400
|
next
|
405
401
|
end
|
406
402
|
|
@@ -408,17 +404,16 @@ module Recurly
|
|
408
404
|
resource_class = Recurly.const_get(
|
409
405
|
Helper.classify(el.attribute('type') || el.name), false
|
410
406
|
)
|
411
|
-
|
407
|
+
case el.name
|
412
408
|
when *associations[:has_many]
|
413
|
-
|
409
|
+
record[el.name] = Pager.new(
|
410
|
+
resource_class, :uri => href.value, :parent => record
|
411
|
+
)
|
414
412
|
when *(associations[:has_one] + associations[:belongs_to])
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
relation
|
420
|
-
rescue Recurly::API::NotFound
|
421
|
-
end
|
413
|
+
record.links[el.name] = {
|
414
|
+
:resource_class => resource_class,
|
415
|
+
:method => :get,
|
416
|
+
:href => href.value
|
422
417
|
}
|
423
418
|
end
|
424
419
|
else
|
@@ -552,22 +547,15 @@ module Recurly
|
|
552
547
|
yield self if block_given?
|
553
548
|
end
|
554
549
|
|
555
|
-
def to_param
|
556
|
-
self[self.class.param_name]
|
557
|
-
end
|
558
|
-
|
559
550
|
# @return [self] Reloads the record from the server.
|
560
551
|
def reload response = nil
|
561
552
|
if response
|
562
553
|
return if response.body.to_s.length.zero?
|
563
554
|
fresh = self.class.from_response response
|
564
555
|
else
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
else
|
569
|
-
self.class.find(to_param, options)
|
570
|
-
end
|
556
|
+
fresh = self.class.find(
|
557
|
+
@href || to_param, :etag => (etag unless changed?)
|
558
|
+
)
|
571
559
|
end
|
572
560
|
fresh and copy_from fresh
|
573
561
|
persist! true
|
@@ -641,9 +629,11 @@ module Recurly
|
|
641
629
|
# account[:last_name] # => "Beneke"
|
642
630
|
# @see #write_attribute
|
643
631
|
def read_attribute key
|
644
|
-
|
645
|
-
if
|
646
|
-
value = attributes[key]
|
632
|
+
key = key.to_s
|
633
|
+
if attributes.key? key
|
634
|
+
value = attributes[key]
|
635
|
+
elsif links.key?(key) && self.class.reflect_on_association(key)
|
636
|
+
value = attributes[key] = follow_link key
|
647
637
|
end
|
648
638
|
value
|
649
639
|
end
|
@@ -685,6 +675,39 @@ module Recurly
|
|
685
675
|
}
|
686
676
|
end
|
687
677
|
|
678
|
+
# @return [Hash] The raw hash of record href links.
|
679
|
+
def links
|
680
|
+
@links ||= {}
|
681
|
+
end
|
682
|
+
|
683
|
+
# Whether a record has a link with the given name.
|
684
|
+
#
|
685
|
+
# @param key [Symbol, String] The name of the link to check for.
|
686
|
+
# @example
|
687
|
+
# account.link? :billing_info # => true
|
688
|
+
def link? key
|
689
|
+
links.key?(key.to_s)
|
690
|
+
end
|
691
|
+
|
692
|
+
# Fetch the value of a link by following the associated href.
|
693
|
+
#
|
694
|
+
# @param key [Symbol, String] The name of the link to be followed.
|
695
|
+
# @param options [Hash] A hash of API options.
|
696
|
+
# @example
|
697
|
+
# account.read_link :billing_info # => <Recurly::BillingInfo>
|
698
|
+
def follow_link key, options = {}
|
699
|
+
if link = links[key = key.to_s]
|
700
|
+
response = API.send link[:method], link[:href], nil, options
|
701
|
+
if resource_class = link[:resource_class]
|
702
|
+
response = resource_class.from_response response
|
703
|
+
response.attributes[self.class.member_name] = self
|
704
|
+
end
|
705
|
+
response
|
706
|
+
end
|
707
|
+
rescue Recurly::API::NotFound
|
708
|
+
raise unless resource_class
|
709
|
+
end
|
710
|
+
|
688
711
|
# Serializes the record to XML.
|
689
712
|
#
|
690
713
|
# @return [String] An XML string.
|
@@ -769,9 +792,10 @@ module Recurly
|
|
769
792
|
# account.save # => true
|
770
793
|
# account.valid? # => true
|
771
794
|
def valid?
|
772
|
-
return true if persisted? &&
|
773
|
-
|
774
|
-
|
795
|
+
return true if persisted? && !changed?
|
796
|
+
errors_empty = errors.values.flatten.empty?
|
797
|
+
return if errors_empty && changed?
|
798
|
+
errors_empty
|
775
799
|
end
|
776
800
|
|
777
801
|
# Update a record with a given hash of attributes.
|
@@ -808,7 +832,7 @@ module Recurly
|
|
808
832
|
# account.errors # => {"account_code"=>["can't be blank"]}
|
809
833
|
# account.errors[:account_code] # => ["can't be blank"]
|
810
834
|
def errors
|
811
|
-
@errors ||= Errors.new
|
835
|
+
@errors ||= Errors.new { |h, k| h[k] = [] }
|
812
836
|
end
|
813
837
|
|
814
838
|
# Marks a record as persisted, i.e. not a new or deleted record, resetting
|
@@ -872,8 +896,9 @@ module Recurly
|
|
872
896
|
@href,
|
873
897
|
changed_attributes,
|
874
898
|
previous_changes,
|
899
|
+
response,
|
875
900
|
etag,
|
876
|
-
|
901
|
+
links
|
877
902
|
]
|
878
903
|
end
|
879
904
|
|
@@ -886,7 +911,8 @@ module Recurly
|
|
886
911
|
@changed_attributes,
|
887
912
|
@previous_changes,
|
888
913
|
@response,
|
889
|
-
@etag
|
914
|
+
@etag,
|
915
|
+
@links = serialization
|
890
916
|
end
|
891
917
|
|
892
918
|
# @return [String]
|
@@ -913,12 +939,12 @@ module Recurly
|
|
913
939
|
|
914
940
|
def invalid! attribute_path, error
|
915
941
|
if attribute_path.length == 1
|
916
|
-
|
942
|
+
errors[attribute_path[0]] << error
|
917
943
|
else
|
918
944
|
child, k, v = attribute_path.shift.scan(/[^\[\]=]+/)
|
919
945
|
if c = k ? self[child].find { |d| d[k] == v } : self[child]
|
920
946
|
c.invalid! attribute_path, error
|
921
|
-
|
947
|
+
e = errors[child] << 'is invalid' and e.uniq!
|
922
948
|
end
|
923
949
|
end
|
924
950
|
end
|
data/lib/recurly/subscription.rb
CHANGED
@@ -39,6 +39,9 @@ module Recurly
|
|
39
39
|
subscription_add_ons
|
40
40
|
coupon_code
|
41
41
|
total_billing_cycles
|
42
|
+
net_terms
|
43
|
+
collection_method
|
44
|
+
po_number
|
42
45
|
)
|
43
46
|
alias to_param uuid
|
44
47
|
|
@@ -94,8 +97,8 @@ module Recurly
|
|
94
97
|
# subscription = account.subscriptions.first
|
95
98
|
# subscription.cancel # => true
|
96
99
|
def cancel
|
97
|
-
return false unless
|
98
|
-
reload
|
100
|
+
return false unless link? :cancel
|
101
|
+
reload follow_link :cancel
|
99
102
|
true
|
100
103
|
end
|
101
104
|
|
@@ -116,11 +119,11 @@ module Recurly
|
|
116
119
|
# subscription = account.subscriptions.first
|
117
120
|
# subscription.terminate(:partial) # => true
|
118
121
|
def terminate refund_type = :none
|
119
|
-
return false unless
|
122
|
+
return false unless link? :terminate
|
120
123
|
unless REFUND_TYPES.include? refund_type.to_s
|
121
124
|
raise ArgumentError, "refund must be one of: #{REFUND_TYPES.join ', '}"
|
122
125
|
end
|
123
|
-
reload
|
126
|
+
reload follow_link(:terminate, :params => { :refund => refund_type })
|
124
127
|
true
|
125
128
|
end
|
126
129
|
alias destroy terminate
|
@@ -131,8 +134,8 @@ module Recurly
|
|
131
134
|
# (e.g., the subscription is already active), and may raise an exception
|
132
135
|
# if the reactivation fails.
|
133
136
|
def reactivate
|
134
|
-
return false unless
|
135
|
-
reload
|
137
|
+
return false unless link? :reactivate
|
138
|
+
reload follow_link :reactivate
|
136
139
|
true
|
137
140
|
end
|
138
141
|
|
@@ -142,8 +145,8 @@ module Recurly
|
|
142
145
|
# (e.g., the subscription is not active).
|
143
146
|
# @param next_renewal_date [Time] when the subscription should renew.
|
144
147
|
def postpone next_renewal_date
|
145
|
-
return false unless
|
146
|
-
reload
|
148
|
+
return false unless link? :postpone
|
149
|
+
reload follow_link(:postpone,
|
147
150
|
:params => { :next_renewal_date => next_renewal_date }
|
148
151
|
)
|
149
152
|
true
|
@@ -13,6 +13,7 @@ module Recurly
|
|
13
13
|
|
14
14
|
case add_on
|
15
15
|
when AddOn, SubscriptionAddOn
|
16
|
+
@add_on = add_on if add_on.is_a? AddOn
|
16
17
|
self.add_on_code = add_on.add_on_code
|
17
18
|
self.quantity = add_on.quantity
|
18
19
|
if add_on.unit_amount_in_cents
|
@@ -29,6 +30,10 @@ module Recurly
|
|
29
30
|
@subscription = subscription
|
30
31
|
end
|
31
32
|
|
33
|
+
def add_on
|
34
|
+
@add_on ||= subscription.plan.add_ons.find add_on_code
|
35
|
+
end
|
36
|
+
|
32
37
|
def currency
|
33
38
|
subscription.currency if subscription
|
34
39
|
end
|
data/lib/recurly/transaction.rb
CHANGED
@@ -69,9 +69,9 @@ module Recurly
|
|
69
69
|
# @param amount_in_cents [Integer, nil] The amount (in cents) to refund
|
70
70
|
# (refunds fully if nil).
|
71
71
|
def refund amount_in_cents = nil
|
72
|
-
return false unless
|
72
|
+
return false unless link? :refund
|
73
73
|
refund = self.class.from_response(
|
74
|
-
|
74
|
+
follow_link :refund, :params => { :amount_in_cents => amount_in_cents }
|
75
75
|
)
|
76
76
|
refund.uuid == uuid ? copy_from(refund) && self : refund
|
77
77
|
end
|
data/lib/recurly/version.rb
CHANGED
metadata
CHANGED
@@ -1,55 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: recurly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Recurly
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2013-11-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 0.9.2
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.9.2
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: minitest
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 2.6.1
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 2.6.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: webmock
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 1.7.6
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 1.7.6
|
55
55
|
description: 'An API client library for Recurly: http://recurly.com'
|
@@ -60,19 +60,16 @@ extensions: []
|
|
60
60
|
extra_rdoc_files:
|
61
61
|
- README.markdown
|
62
62
|
files:
|
63
|
-
- README.markdown
|
64
|
-
- bin/recurly
|
65
63
|
- lib/ecurly.rb
|
66
64
|
- lib/rails/generators/recurly/config_generator.rb
|
67
65
|
- lib/rails/recurly.rb
|
68
|
-
- lib/recurly.rb
|
69
66
|
- lib/recurly/account.rb
|
70
67
|
- lib/recurly/add_on.rb
|
71
68
|
- lib/recurly/adjustment.rb
|
72
69
|
- lib/recurly/all.rb
|
73
|
-
- lib/recurly/api.rb
|
74
70
|
- lib/recurly/api/errors.rb
|
75
71
|
- lib/recurly/api/net_http_adapter.rb
|
72
|
+
- lib/recurly/api.rb
|
76
73
|
- lib/recurly/billing_info.rb
|
77
74
|
- lib/recurly/coupon.rb
|
78
75
|
- lib/recurly/helper.rb
|
@@ -81,42 +78,46 @@ files:
|
|
81
78
|
- lib/recurly/money.rb
|
82
79
|
- lib/recurly/plan.rb
|
83
80
|
- lib/recurly/redemption.rb
|
84
|
-
- lib/recurly/resource.rb
|
85
81
|
- lib/recurly/resource/errors.rb
|
86
82
|
- lib/recurly/resource/pager.rb
|
87
|
-
- lib/recurly/
|
83
|
+
- lib/recurly/resource.rb
|
88
84
|
- lib/recurly/subscription/add_ons.rb
|
85
|
+
- lib/recurly/subscription.rb
|
89
86
|
- lib/recurly/subscription_add_on.rb
|
90
|
-
- lib/recurly/transaction.rb
|
91
87
|
- lib/recurly/transaction/errors.rb
|
88
|
+
- lib/recurly/transaction.rb
|
92
89
|
- lib/recurly/version.rb
|
93
|
-
- lib/recurly/xml.rb
|
94
90
|
- lib/recurly/xml/nokogiri.rb
|
95
91
|
- lib/recurly/xml/rexml.rb
|
92
|
+
- lib/recurly/xml.rb
|
93
|
+
- lib/recurly.rb
|
94
|
+
- README.markdown
|
95
|
+
- bin/recurly
|
96
96
|
homepage: https://github.com/recurly/recurly-client-ruby
|
97
97
|
licenses:
|
98
98
|
- MIT
|
99
99
|
metadata: {}
|
100
100
|
post_install_message:
|
101
101
|
rdoc_options:
|
102
|
-
-
|
102
|
+
- --main
|
103
103
|
- README.markdown
|
104
104
|
require_paths:
|
105
105
|
- lib
|
106
106
|
required_ruby_version: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - '>='
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
112
112
|
requirements:
|
113
|
-
- -
|
113
|
+
- - '>='
|
114
114
|
- !ruby/object:Gem::Version
|
115
115
|
version: '0'
|
116
116
|
requirements: []
|
117
117
|
rubyforge_project:
|
118
|
-
rubygems_version: 2.
|
118
|
+
rubygems_version: 2.1.10
|
119
119
|
signing_key:
|
120
120
|
specification_version: 4
|
121
121
|
summary: Recurly API Client
|
122
122
|
test_files: []
|
123
|
+
has_rdoc: true
|