recurly 0.4.16 → 2.0.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.
- data/README.markdown +118 -0
- data/bin/recurly +78 -0
- data/lib/rails/generators/recurly/config_generator.rb +16 -0
- data/lib/rails/recurly.rb +13 -0
- data/lib/recurly.rb +64 -139
- data/lib/recurly/account.rb +52 -111
- data/lib/recurly/add_on.rb +20 -0
- data/lib/recurly/adjustment.rb +51 -0
- data/lib/recurly/api.rb +73 -0
- data/lib/recurly/api/errors.rb +205 -0
- data/lib/recurly/api/net_http.rb +77 -0
- data/lib/recurly/billing_info.rb +45 -42
- data/lib/recurly/coupon.rb +63 -8
- data/lib/recurly/helper.rb +39 -0
- data/lib/recurly/invoice.rb +38 -16
- data/lib/recurly/js.rb +113 -0
- data/lib/recurly/money.rb +105 -0
- data/lib/recurly/plan.rb +26 -15
- data/lib/recurly/redemption.rb +34 -0
- data/lib/recurly/resource.rb +925 -0
- data/lib/recurly/resource/pager.rb +210 -0
- data/lib/recurly/subscription.rb +90 -67
- data/lib/recurly/subscription/add_ons.rb +73 -0
- data/lib/recurly/transaction.rb +65 -53
- data/lib/recurly/transaction/errors.rb +98 -0
- data/lib/recurly/version.rb +16 -2
- data/lib/recurly/xml.rb +85 -0
- data/lib/recurly/xml/nokogiri.rb +49 -0
- data/lib/recurly/xml/rexml.rb +50 -0
- metadata +76 -165
- data/LICENSE +0 -21
- data/README.md +0 -104
- data/init.rb +0 -1
- data/lib/patches/rails2/active_resource/base.rb +0 -35
- data/lib/patches/rails2/active_resource/connection.rb +0 -10
- data/lib/patches/rails3/active_model/serializers/xml.rb +0 -28
- data/lib/patches/rails3/active_resource/connection.rb +0 -10
- data/lib/recurly/account_base.rb +0 -35
- data/lib/recurly/base.rb +0 -195
- data/lib/recurly/charge.rb +0 -39
- data/lib/recurly/config_parser.rb +0 -31
- data/lib/recurly/credit.rb +0 -28
- data/lib/recurly/exceptions.rb +0 -32
- data/lib/recurly/formats/xml_with_errors.rb +0 -132
- data/lib/recurly/formats/xml_with_pagination.rb +0 -47
- data/lib/recurly/rails2/compatibility.rb +0 -8
- data/lib/recurly/rails3/railtie.rb +0 -21
- data/lib/recurly/rails3/recurly.rake +0 -28
- data/lib/recurly/transparent.rb +0 -148
- data/lib/recurly/verification.rb +0 -83
- data/spec/config/recurly.yml +0 -6
- data/spec/config/test1.yml +0 -4
- data/spec/config/test2.yml +0 -7
- data/spec/integration/account_spec.rb +0 -286
- data/spec/integration/add_on_spec.rb +0 -84
- data/spec/integration/billing_info_spec.rb +0 -148
- data/spec/integration/charge_spec.rb +0 -176
- data/spec/integration/coupon_spec.rb +0 -49
- data/spec/integration/credit_spec.rb +0 -106
- data/spec/integration/invoice_spec.rb +0 -86
- data/spec/integration/plan_spec.rb +0 -87
- data/spec/integration/subscription_spec.rb +0 -221
- data/spec/integration/transaction_spec.rb +0 -154
- data/spec/integration/transparent_spec.rb +0 -99
- data/spec/spec_helper.rb +0 -34
- data/spec/support/factory.rb +0 -211
- data/spec/support/vcr.rb +0 -11
- data/spec/unit/account_spec.rb +0 -19
- data/spec/unit/billing_info_spec.rb +0 -39
- data/spec/unit/charge_spec.rb +0 -20
- data/spec/unit/config_spec.rb +0 -42
- data/spec/unit/coupon_spec.rb +0 -13
- data/spec/unit/credit_spec.rb +0 -20
- data/spec/unit/plan_spec.rb +0 -18
- data/spec/unit/subscription_spec.rb +0 -25
- data/spec/unit/transaction_spec.rb +0 -32
- data/spec/unit/transparent_spec.rb +0 -152
- data/spec/unit/verification_spec.rb +0 -82
data/lib/recurly/transaction.rb
CHANGED
@@ -1,68 +1,80 @@
|
|
1
1
|
module Recurly
|
2
|
-
class Transaction <
|
3
|
-
|
2
|
+
class Transaction < Resource
|
3
|
+
require 'recurly/transaction/errors'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
"action",
|
12
|
-
"date",
|
13
|
-
"status",
|
14
|
-
"message",
|
15
|
-
"reference",
|
16
|
-
"ccv_result",
|
17
|
-
"avs_result",
|
18
|
-
"avs_result_street",
|
19
|
-
"avs_result_postal",
|
20
|
-
"test",
|
21
|
-
"voidable",
|
22
|
-
"refundable"
|
23
|
-
]
|
24
|
-
end
|
5
|
+
# @macro [attach] scope
|
6
|
+
# @scope class
|
7
|
+
# @return [Pager] a pager that yields +$1+ transactions.
|
8
|
+
scope :authorizations, :type => 'authorization'
|
9
|
+
scope :purchases, :type => 'purchase'
|
10
|
+
scope :refunds, :type => 'refund'
|
25
11
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
attributes = attributes.with_indifferent_access
|
30
|
-
attributes[:account] ||= {}
|
31
|
-
super
|
32
|
-
end
|
12
|
+
scope :successful, :state => 'successful'
|
13
|
+
scope :failed, :state => 'failed'
|
14
|
+
scope :voided, :state => 'voided'
|
33
15
|
|
34
|
-
|
16
|
+
# @return [Account]
|
17
|
+
belongs_to :account
|
35
18
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
19
|
+
define_attribute_methods %w(
|
20
|
+
uuid
|
21
|
+
action
|
22
|
+
amount_in_cents
|
23
|
+
tax_in_cents
|
24
|
+
currency
|
25
|
+
status
|
26
|
+
reference
|
27
|
+
recurring
|
28
|
+
test
|
29
|
+
voidable
|
30
|
+
refundable
|
31
|
+
cvv_result
|
32
|
+
avs_result
|
33
|
+
avs_result_street
|
34
|
+
created_at
|
35
|
+
details
|
36
|
+
)
|
37
|
+
alias to_param uuid
|
43
38
|
|
44
|
-
|
45
|
-
|
39
|
+
# @return ["credit", "charge", nil] The type of transaction.
|
40
|
+
attr_reader :type
|
46
41
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
end
|
51
|
-
|
52
|
-
results
|
42
|
+
# @see Resource#initialize
|
43
|
+
def initialize attributes = {}
|
44
|
+
super({ :currency => Recurly.default_currency }.merge attributes)
|
53
45
|
end
|
54
46
|
|
55
|
-
|
56
|
-
|
47
|
+
# Saves new records only.
|
48
|
+
#
|
49
|
+
# @return [true, false]
|
50
|
+
# @raise [Recurly::Error] For persisted transactions.
|
51
|
+
# @see Resource#save
|
52
|
+
def save
|
53
|
+
return super if new_record?
|
54
|
+
raise Recurly::Error, "#{self.class.collection_name} cannot be updated"
|
57
55
|
end
|
58
56
|
|
59
|
-
|
60
|
-
|
57
|
+
# Refunds the transaction.
|
58
|
+
#
|
59
|
+
# @return [Transaction, false] The refund when successful, false otherwise.
|
60
|
+
# @raise [Error] If the refund fails.
|
61
|
+
# @param amount_in_cents [Integer, nil] The amount (in cents) to refund
|
62
|
+
# (refunds fully if nil).
|
63
|
+
# @see Transaction#void
|
64
|
+
def refund amount_in_cents = nil
|
65
|
+
return false unless self[:refund]
|
66
|
+
self.class.from_response(
|
67
|
+
self[:refund].call :params => { :amount_in_cents => amount_in_cents }
|
68
|
+
)
|
61
69
|
end
|
62
70
|
|
63
|
-
|
64
|
-
|
71
|
+
# @return [String]
|
72
|
+
def inspect
|
73
|
+
attributes = self.class.attribute_names
|
74
|
+
unless type == 'credit_card'
|
75
|
+
attributes -= %w(cvv_result avs_result avs_result_street)
|
76
|
+
end
|
77
|
+
super attributes
|
65
78
|
end
|
66
|
-
|
67
79
|
end
|
68
|
-
end
|
80
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
module Recurly
|
2
|
+
class Transaction < Resource
|
3
|
+
# The base error class for transaction errors, raised when a transaction
|
4
|
+
# fails.
|
5
|
+
#
|
6
|
+
# Error messages are customer-friendly, though only {DeclinedError}
|
7
|
+
# messages should be a part of the normal API flow (a {ConfigurationError},
|
8
|
+
# for example, is a problem that a customer cannot solve and requires your
|
9
|
+
# attention).
|
10
|
+
#
|
11
|
+
# If a record of the transaction was stored in Recurly, it will be
|
12
|
+
# accessible via {Error#transaction}.
|
13
|
+
#
|
14
|
+
# @example
|
15
|
+
# begin
|
16
|
+
# subscription.save!
|
17
|
+
# rescue Recurly::Resource::Invalid => e
|
18
|
+
# # Display e.record.errors...
|
19
|
+
# rescue Recurly::Transaction::DeclinedError => e
|
20
|
+
# # Display e.message and/or subscription (and associated) errors...
|
21
|
+
# rescue Recurly::Transaction::RetryableError => e
|
22
|
+
# # You should be able to attempt to save this again later.
|
23
|
+
# rescue Recurly::Transaction::Error => e
|
24
|
+
# # Alert yourself of the issue (i.e., log e.transaction).
|
25
|
+
# # Display a generic error message.
|
26
|
+
# end
|
27
|
+
class Error < API::UnprocessableEntity
|
28
|
+
# @return [Transaction] The transaction as returned (or updated) by
|
29
|
+
# Recurly.
|
30
|
+
attr_reader :transaction
|
31
|
+
|
32
|
+
def initialize request, response, transaction
|
33
|
+
super request, response
|
34
|
+
update_transaction transaction
|
35
|
+
end
|
36
|
+
|
37
|
+
# @return [String] A customer-friendly error message.
|
38
|
+
def to_s
|
39
|
+
xml.text '/errors/transaction_error/customer_message'
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def update_transaction transaction
|
45
|
+
return unless transaction_xml = xml['/errors/transaction']
|
46
|
+
|
47
|
+
@transaction = transaction
|
48
|
+
transaction = Transaction.from_xml transaction_xml
|
49
|
+
if @transaction.nil?
|
50
|
+
@transaction = transaction
|
51
|
+
else
|
52
|
+
@transaction.instance_variable_get(:@attributes).update(
|
53
|
+
transaction.attributes
|
54
|
+
)
|
55
|
+
end
|
56
|
+
@transaction.persist!
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
# Raised when a transaction fails for a temporary reason. The transaction
|
61
|
+
# should be retried later.
|
62
|
+
class RetryableError < Error
|
63
|
+
end
|
64
|
+
|
65
|
+
# Raised when a transaction fails due to a misconfiguration, e.g. if the
|
66
|
+
# gateway hasn't been configured.
|
67
|
+
class ConfigurationError < Error
|
68
|
+
end
|
69
|
+
|
70
|
+
# Raised when a transaction fails because the billing information was
|
71
|
+
# invalid.
|
72
|
+
class DeclinedError < Error
|
73
|
+
end
|
74
|
+
|
75
|
+
# Raised when the gateway believes this transaction to be a duplicate.
|
76
|
+
class DuplicateError < DeclinedError
|
77
|
+
end
|
78
|
+
|
79
|
+
class << Error
|
80
|
+
CATEGORY_MAP = Hash.new DeclinedError
|
81
|
+
CATEGORY_MAP.update(
|
82
|
+
'communication' => RetryableError,
|
83
|
+
'configuration' => ConfigurationError,
|
84
|
+
'duplicate' => DuplicateError
|
85
|
+
)
|
86
|
+
|
87
|
+
def validate! exception, transaction
|
88
|
+
return unless exception.is_a? API::UnprocessableEntity
|
89
|
+
|
90
|
+
category = exception.send(:xml).text(
|
91
|
+
'/errors/transaction_error/error_category'
|
92
|
+
) and raise CATEGORY_MAP[category].new(
|
93
|
+
exception.request, exception.response, transaction
|
94
|
+
)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
data/lib/recurly/version.rb
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
-
module Recurly
|
2
|
-
|
1
|
+
module Recurly
|
2
|
+
module Version
|
3
|
+
MAJOR = 2
|
4
|
+
MINOR = 0
|
5
|
+
PATCH = 0
|
6
|
+
PRE = nil
|
7
|
+
|
8
|
+
VERSION = [MAJOR, MINOR, PATCH, PRE].compact.join('.').freeze
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def inspect
|
12
|
+
VERSION.dup
|
13
|
+
end
|
14
|
+
alias to_s inspect
|
15
|
+
end
|
16
|
+
end
|
3
17
|
end
|
data/lib/recurly/xml.rb
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
module Recurly
|
2
|
+
class XML
|
3
|
+
class << self
|
4
|
+
def cast el
|
5
|
+
return if el.attribute 'nil'
|
6
|
+
|
7
|
+
if el.attribute 'type'
|
8
|
+
type = el.attribute('type').value
|
9
|
+
end
|
10
|
+
|
11
|
+
case type
|
12
|
+
when 'array' then el.elements.map { |e| { e.name => XML.cast(e) } }
|
13
|
+
when 'boolean' then el.text == 'true'
|
14
|
+
when 'date' then Date.parse el.text
|
15
|
+
when 'datetime' then DateTime.parse el.text
|
16
|
+
when 'float' then el.text.to_f
|
17
|
+
when 'integer' then el.text.to_i
|
18
|
+
else
|
19
|
+
# FIXME: Move some of this logic to Resource.from_xml?
|
20
|
+
if type and resource_name = Helper.classify(type)
|
21
|
+
if Recurly.const_defined? resource_name
|
22
|
+
resource_class = Recurly.const_get(Helper.classify(type))
|
23
|
+
return resource_class.new resource_class.from_xml(el)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
if el.elements.empty?
|
27
|
+
el.text
|
28
|
+
else
|
29
|
+
Hash[el.elements.map { |e| [e.name, XML.cast(e)] }]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def filter text
|
35
|
+
xml = XML.new text
|
36
|
+
xml.each do |el|
|
37
|
+
el = XML.new el
|
38
|
+
case el.name
|
39
|
+
when /number/
|
40
|
+
text = el.text
|
41
|
+
last = text[-4, 4]
|
42
|
+
el.text = "#{text[0, text.length - 4].gsub(/\d/, '*')}#{last}"
|
43
|
+
when /verification_value/
|
44
|
+
el.text = el.text.gsub(/\d/, '*')
|
45
|
+
end
|
46
|
+
end
|
47
|
+
xml.to_s
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
attr_reader :root
|
52
|
+
|
53
|
+
def initialize xml
|
54
|
+
@root = xml.is_a?(String) ? super : xml
|
55
|
+
end
|
56
|
+
|
57
|
+
# Adds an element to the root.
|
58
|
+
def add_element name, value = nil
|
59
|
+
value = value.respond_to?(:xmlschema) ? value.xmlschema : value.to_s
|
60
|
+
XML.new super(name, value)
|
61
|
+
end
|
62
|
+
|
63
|
+
# Iterates over the root's elements.
|
64
|
+
def each_element xpath = nil
|
65
|
+
return enum_for :each_element unless block_given?
|
66
|
+
super
|
67
|
+
end
|
68
|
+
|
69
|
+
# Returns the root's name.
|
70
|
+
def name
|
71
|
+
super
|
72
|
+
end
|
73
|
+
|
74
|
+
# Returns an XML string.
|
75
|
+
def to_s
|
76
|
+
super
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
if defined? Nokogiri
|
82
|
+
require 'recurly/xml/nokogiri'
|
83
|
+
else
|
84
|
+
require 'recurly/xml/rexml'
|
85
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Recurly
|
2
|
+
class XML
|
3
|
+
module NokogiriAdapter
|
4
|
+
def initialize xml
|
5
|
+
@root = Nokogiri(xml).root
|
6
|
+
end
|
7
|
+
|
8
|
+
def add_element name, value = nil
|
9
|
+
root.add_child(node = ::Nokogiri::XML::Element.new(name, root))
|
10
|
+
node << value if value
|
11
|
+
node
|
12
|
+
end
|
13
|
+
|
14
|
+
def each_element xpath = nil
|
15
|
+
elements = xpath.nil? ? root.children : root.xpath(xpath)
|
16
|
+
elements.each { |el| yield el }
|
17
|
+
end
|
18
|
+
|
19
|
+
def each element = root
|
20
|
+
element.elements.each do |el|
|
21
|
+
yield el
|
22
|
+
each el, &Proc.new
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def name
|
27
|
+
root.name
|
28
|
+
end
|
29
|
+
|
30
|
+
def [] xpath
|
31
|
+
root.at_xpath xpath
|
32
|
+
end
|
33
|
+
|
34
|
+
def text xpath = nil
|
35
|
+
node = root.at_xpath(xpath) and node.text
|
36
|
+
end
|
37
|
+
|
38
|
+
def text= text
|
39
|
+
root.content = text
|
40
|
+
end
|
41
|
+
|
42
|
+
def to_s
|
43
|
+
root.to_xml(:indent => 0).gsub(/$\n/, '')
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
include NokogiriAdapter
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'rexml/document'
|
2
|
+
|
3
|
+
module Recurly
|
4
|
+
class XML
|
5
|
+
module REXMLAdapter
|
6
|
+
def initialize xml
|
7
|
+
@root = ::REXML::Document.new(xml).root
|
8
|
+
end
|
9
|
+
|
10
|
+
def add_element name, value = nil
|
11
|
+
node = root.add_element name
|
12
|
+
node.text = value if value
|
13
|
+
node
|
14
|
+
end
|
15
|
+
|
16
|
+
def each_element xpath = nil
|
17
|
+
root.each_element(xpath) { |el| yield el }
|
18
|
+
end
|
19
|
+
|
20
|
+
def each element = root
|
21
|
+
element.each_element do |el|
|
22
|
+
yield el
|
23
|
+
each el, &Proc.new
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def name
|
28
|
+
root.name
|
29
|
+
end
|
30
|
+
|
31
|
+
def [] xpath
|
32
|
+
root.get_elements(xpath).first
|
33
|
+
end
|
34
|
+
|
35
|
+
def text xpath = nil
|
36
|
+
text = root.get_text(xpath) and text.to_s
|
37
|
+
end
|
38
|
+
|
39
|
+
def text= text
|
40
|
+
root.text = text
|
41
|
+
end
|
42
|
+
|
43
|
+
def to_s
|
44
|
+
root.to_s
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
include REXMLAdapter
|
49
|
+
end
|
50
|
+
end
|
metadata
CHANGED
@@ -1,198 +1,137 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: recurly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 2.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
|
-
-
|
9
|
-
- Jacques Crocker
|
8
|
+
- Recurly
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date:
|
12
|
+
date: 2011-10-25 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
17
|
-
requirement: !ruby/object:Gem::Requirement
|
15
|
+
name: rake
|
16
|
+
requirement: &70168118224900 !ruby/object:Gem::Requirement
|
18
17
|
none: false
|
19
18
|
requirements:
|
20
|
-
- -
|
19
|
+
- - ~>
|
21
20
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
23
|
-
type: :
|
21
|
+
version: 0.9.2
|
22
|
+
type: :development
|
24
23
|
prerelease: false
|
25
|
-
version_requirements:
|
26
|
-
none: false
|
27
|
-
requirements:
|
28
|
-
- - ! '>='
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
version: '2.3'
|
24
|
+
version_requirements: *70168118224900
|
31
25
|
- !ruby/object:Gem::Dependency
|
32
|
-
name:
|
33
|
-
requirement: !ruby/object:Gem::Requirement
|
26
|
+
name: bundler
|
27
|
+
requirement: &70168118239400 !ruby/object:Gem::Requirement
|
34
28
|
none: false
|
35
29
|
requirements:
|
36
|
-
- -
|
30
|
+
- - ~>
|
37
31
|
- !ruby/object:Gem::Version
|
38
|
-
version:
|
39
|
-
type: :
|
32
|
+
version: 1.1.pre.10
|
33
|
+
type: :development
|
40
34
|
prerelease: false
|
41
|
-
version_requirements:
|
42
|
-
none: false
|
43
|
-
requirements:
|
44
|
-
- - ! '>='
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: '2.3'
|
35
|
+
version_requirements: *70168118239400
|
47
36
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
49
|
-
requirement: !ruby/object:Gem::Requirement
|
37
|
+
name: minitest
|
38
|
+
requirement: &70168118236700 !ruby/object:Gem::Requirement
|
50
39
|
none: false
|
51
40
|
requirements:
|
52
|
-
- -
|
41
|
+
- - ~>
|
53
42
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
55
|
-
type: :
|
43
|
+
version: 2.6.1
|
44
|
+
type: :development
|
56
45
|
prerelease: false
|
57
|
-
version_requirements:
|
58
|
-
none: false
|
59
|
-
requirements:
|
60
|
-
- - ! '>='
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: '2.2'
|
46
|
+
version_requirements: *70168118236700
|
63
47
|
- !ruby/object:Gem::Dependency
|
64
|
-
name:
|
65
|
-
requirement: !ruby/object:Gem::Requirement
|
48
|
+
name: webmock
|
49
|
+
requirement: &70168118235440 !ruby/object:Gem::Requirement
|
66
50
|
none: false
|
67
51
|
requirements:
|
68
|
-
- -
|
52
|
+
- - ~>
|
69
53
|
- !ruby/object:Gem::Version
|
70
|
-
version:
|
71
|
-
type: :
|
54
|
+
version: 1.7.6
|
55
|
+
type: :development
|
72
56
|
prerelease: false
|
73
|
-
version_requirements:
|
74
|
-
none: false
|
75
|
-
requirements:
|
76
|
-
- - ! '>='
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
version: '1.4'
|
57
|
+
version_requirements: *70168118235440
|
79
58
|
- !ruby/object:Gem::Dependency
|
80
|
-
name:
|
81
|
-
requirement: !ruby/object:Gem::Requirement
|
59
|
+
name: guard-minitest
|
60
|
+
requirement: &70168118234400 !ruby/object:Gem::Requirement
|
82
61
|
none: false
|
83
62
|
requirements:
|
84
|
-
- -
|
63
|
+
- - ~>
|
85
64
|
- !ruby/object:Gem::Version
|
86
|
-
version:
|
65
|
+
version: 0.4.0
|
87
66
|
type: :development
|
88
67
|
prerelease: false
|
89
|
-
version_requirements:
|
90
|
-
none: false
|
91
|
-
requirements:
|
92
|
-
- - ! '>='
|
93
|
-
- !ruby/object:Gem::Version
|
94
|
-
version: 2.0.0.beta.22
|
68
|
+
version_requirements: *70168118234400
|
95
69
|
- !ruby/object:Gem::Dependency
|
96
|
-
name:
|
97
|
-
requirement: !ruby/object:Gem::Requirement
|
70
|
+
name: rb-fsevent
|
71
|
+
requirement: &70168118232720 !ruby/object:Gem::Requirement
|
98
72
|
none: false
|
99
73
|
requirements:
|
100
|
-
- -
|
74
|
+
- - ~>
|
101
75
|
- !ruby/object:Gem::Version
|
102
|
-
version:
|
76
|
+
version: 0.4.3.1
|
103
77
|
type: :development
|
104
78
|
prerelease: false
|
105
|
-
version_requirements:
|
106
|
-
none: false
|
107
|
-
requirements:
|
108
|
-
- - ! '>='
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
79
|
+
version_requirements: *70168118232720
|
111
80
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
81
|
+
name: growl_notify
|
82
|
+
requirement: &70168122344800 !ruby/object:Gem::Requirement
|
114
83
|
none: false
|
115
84
|
requirements:
|
116
|
-
- -
|
85
|
+
- - ~>
|
117
86
|
- !ruby/object:Gem::Version
|
118
|
-
version:
|
87
|
+
version: 0.0.1
|
119
88
|
type: :development
|
120
89
|
prerelease: false
|
121
|
-
version_requirements:
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
version: '0'
|
127
|
-
description: A Ruby API wrapper for Recurly. Super Simple Subscription billing.
|
128
|
-
email:
|
129
|
-
- support@recurly.com
|
130
|
-
executables: []
|
90
|
+
version_requirements: *70168122344800
|
91
|
+
description: ! 'An API client library for Recurly: http://recurly.com'
|
92
|
+
email: support@recurly.com
|
93
|
+
executables:
|
94
|
+
- recurly
|
131
95
|
extensions: []
|
132
|
-
extra_rdoc_files:
|
96
|
+
extra_rdoc_files:
|
97
|
+
- README.markdown
|
133
98
|
files:
|
134
|
-
- lib/
|
135
|
-
- lib/
|
136
|
-
- lib/patches/rails3/active_model/serializers/xml.rb
|
137
|
-
- lib/patches/rails3/active_resource/connection.rb
|
99
|
+
- lib/rails/generators/recurly/config_generator.rb
|
100
|
+
- lib/rails/recurly.rb
|
138
101
|
- lib/recurly/account.rb
|
139
|
-
- lib/recurly/
|
140
|
-
- lib/recurly/
|
102
|
+
- lib/recurly/add_on.rb
|
103
|
+
- lib/recurly/adjustment.rb
|
104
|
+
- lib/recurly/api/errors.rb
|
105
|
+
- lib/recurly/api/net_http.rb
|
106
|
+
- lib/recurly/api.rb
|
141
107
|
- lib/recurly/billing_info.rb
|
142
|
-
- lib/recurly/charge.rb
|
143
|
-
- lib/recurly/config_parser.rb
|
144
108
|
- lib/recurly/coupon.rb
|
145
|
-
- lib/recurly/
|
146
|
-
- lib/recurly/exceptions.rb
|
147
|
-
- lib/recurly/formats/xml_with_errors.rb
|
148
|
-
- lib/recurly/formats/xml_with_pagination.rb
|
109
|
+
- lib/recurly/helper.rb
|
149
110
|
- lib/recurly/invoice.rb
|
111
|
+
- lib/recurly/js.rb
|
112
|
+
- lib/recurly/money.rb
|
150
113
|
- lib/recurly/plan.rb
|
151
|
-
- lib/recurly/
|
152
|
-
- lib/recurly/
|
153
|
-
- lib/recurly/
|
114
|
+
- lib/recurly/redemption.rb
|
115
|
+
- lib/recurly/resource/pager.rb
|
116
|
+
- lib/recurly/resource.rb
|
117
|
+
- lib/recurly/subscription/add_ons.rb
|
154
118
|
- lib/recurly/subscription.rb
|
119
|
+
- lib/recurly/transaction/errors.rb
|
155
120
|
- lib/recurly/transaction.rb
|
156
|
-
- lib/recurly/transparent.rb
|
157
|
-
- lib/recurly/verification.rb
|
158
121
|
- lib/recurly/version.rb
|
122
|
+
- lib/recurly/xml/nokogiri.rb
|
123
|
+
- lib/recurly/xml/rexml.rb
|
124
|
+
- lib/recurly/xml.rb
|
159
125
|
- lib/recurly.rb
|
160
|
-
-
|
161
|
-
-
|
162
|
-
- README.md
|
163
|
-
- spec/config/recurly.yml
|
164
|
-
- spec/config/test1.yml
|
165
|
-
- spec/config/test2.yml
|
166
|
-
- spec/integration/account_spec.rb
|
167
|
-
- spec/integration/add_on_spec.rb
|
168
|
-
- spec/integration/billing_info_spec.rb
|
169
|
-
- spec/integration/charge_spec.rb
|
170
|
-
- spec/integration/coupon_spec.rb
|
171
|
-
- spec/integration/credit_spec.rb
|
172
|
-
- spec/integration/invoice_spec.rb
|
173
|
-
- spec/integration/plan_spec.rb
|
174
|
-
- spec/integration/subscription_spec.rb
|
175
|
-
- spec/integration/transaction_spec.rb
|
176
|
-
- spec/integration/transparent_spec.rb
|
177
|
-
- spec/spec_helper.rb
|
178
|
-
- spec/support/factory.rb
|
179
|
-
- spec/support/vcr.rb
|
180
|
-
- spec/unit/account_spec.rb
|
181
|
-
- spec/unit/billing_info_spec.rb
|
182
|
-
- spec/unit/charge_spec.rb
|
183
|
-
- spec/unit/config_spec.rb
|
184
|
-
- spec/unit/coupon_spec.rb
|
185
|
-
- spec/unit/credit_spec.rb
|
186
|
-
- spec/unit/plan_spec.rb
|
187
|
-
- spec/unit/subscription_spec.rb
|
188
|
-
- spec/unit/transaction_spec.rb
|
189
|
-
- spec/unit/transparent_spec.rb
|
190
|
-
- spec/unit/verification_spec.rb
|
126
|
+
- README.markdown
|
127
|
+
- bin/recurly
|
191
128
|
homepage: http://github.com/recurly/recurly-client-ruby
|
192
|
-
licenses:
|
129
|
+
licenses:
|
130
|
+
- MIT
|
193
131
|
post_install_message:
|
194
132
|
rdoc_options:
|
195
|
-
- --
|
133
|
+
- --main
|
134
|
+
- README.markdown
|
196
135
|
require_paths:
|
197
136
|
- lib
|
198
137
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -208,37 +147,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
208
147
|
- !ruby/object:Gem::Version
|
209
148
|
version: '0'
|
210
149
|
requirements: []
|
211
|
-
rubyforge_project:
|
212
|
-
rubygems_version: 1.8.
|
150
|
+
rubyforge_project:
|
151
|
+
rubygems_version: 1.8.10
|
213
152
|
signing_key:
|
214
153
|
specification_version: 3
|
215
|
-
summary:
|
216
|
-
test_files:
|
217
|
-
- spec/config/recurly.yml
|
218
|
-
- spec/config/test1.yml
|
219
|
-
- spec/config/test2.yml
|
220
|
-
- spec/integration/account_spec.rb
|
221
|
-
- spec/integration/add_on_spec.rb
|
222
|
-
- spec/integration/billing_info_spec.rb
|
223
|
-
- spec/integration/charge_spec.rb
|
224
|
-
- spec/integration/coupon_spec.rb
|
225
|
-
- spec/integration/credit_spec.rb
|
226
|
-
- spec/integration/invoice_spec.rb
|
227
|
-
- spec/integration/plan_spec.rb
|
228
|
-
- spec/integration/subscription_spec.rb
|
229
|
-
- spec/integration/transaction_spec.rb
|
230
|
-
- spec/integration/transparent_spec.rb
|
231
|
-
- spec/spec_helper.rb
|
232
|
-
- spec/support/factory.rb
|
233
|
-
- spec/support/vcr.rb
|
234
|
-
- spec/unit/account_spec.rb
|
235
|
-
- spec/unit/billing_info_spec.rb
|
236
|
-
- spec/unit/charge_spec.rb
|
237
|
-
- spec/unit/config_spec.rb
|
238
|
-
- spec/unit/coupon_spec.rb
|
239
|
-
- spec/unit/credit_spec.rb
|
240
|
-
- spec/unit/plan_spec.rb
|
241
|
-
- spec/unit/subscription_spec.rb
|
242
|
-
- spec/unit/transaction_spec.rb
|
243
|
-
- spec/unit/transparent_spec.rb
|
244
|
-
- spec/unit/verification_spec.rb
|
154
|
+
summary: Recurly API Client
|
155
|
+
test_files: []
|