recurly 2.18.21 → 3.0.0.beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +14 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +158 -110
- data/Rakefile +6 -0
- data/bin/bundle +105 -0
- data/bin/coderay +29 -0
- data/bin/console +14 -0
- data/bin/htmldiff +29 -0
- data/bin/ldiff +29 -0
- data/bin/pry +29 -0
- data/bin/rake +29 -0
- data/bin/rspec +29 -0
- data/bin/setup +8 -0
- data/bin/yard +29 -0
- data/bin/yardoc +29 -0
- data/bin/yri +29 -0
- data/lib/data/ca-certificates.crt +31 -0
- data/lib/recurly/client/operations.rb +935 -0
- data/lib/recurly/client.rb +198 -0
- data/lib/recurly/errors/api_errors.rb +35 -0
- data/lib/recurly/errors/network_errors.rb +8 -0
- data/lib/recurly/errors.rb +34 -0
- data/lib/recurly/pager.rb +119 -0
- data/lib/recurly/request.rb +30 -0
- data/lib/recurly/requests/account_acquisition_updatable.rb +22 -0
- data/lib/recurly/requests/account_create_only.rb +18 -0
- data/lib/recurly/requests/account_updatable.rb +50 -0
- data/lib/recurly/requests/add_on_create.rb +38 -0
- data/lib/recurly/requests/add_on_update.rb +38 -0
- data/lib/recurly/requests/address.rb +42 -0
- data/lib/recurly/requests/billing_info_create.rb +58 -0
- data/lib/recurly/requests/coupon_create_only.rb +66 -0
- data/lib/recurly/requests/coupon_updatable.rb +30 -0
- data/lib/recurly/requests/create_account.rb +62 -0
- data/lib/recurly/requests/create_coupon.rb +90 -0
- data/lib/recurly/requests/invoice_create.rb +42 -0
- data/lib/recurly/requests/invoice_refund.rb +30 -0
- data/lib/recurly/requests/line_item_create.rb +46 -0
- data/lib/recurly/requests/plan_create.rb +66 -0
- data/lib/recurly/requests/plan_update.rb +70 -0
- data/lib/recurly/requests/shipping_address_create.rb +58 -0
- data/lib/recurly/requests/shipping_address_update.rb +62 -0
- data/lib/recurly/requests/subscription_add_on_create.rb +22 -0
- data/lib/recurly/requests/subscription_change_create.rb +42 -0
- data/lib/recurly/requests/subscription_create.rb +86 -0
- data/lib/recurly/requests/subscription_update.rb +42 -0
- data/lib/recurly/requests/update_coupon.rb +30 -0
- data/lib/recurly/resource.rb +16 -1103
- data/lib/recurly/resources/account.rb +86 -0
- data/lib/recurly/resources/account_acquisition.rb +42 -0
- data/lib/recurly/resources/account_balance.rb +22 -0
- data/lib/recurly/resources/account_note.rb +30 -0
- data/lib/recurly/resources/add_on.rb +62 -0
- data/lib/recurly/resources/address.rb +42 -0
- data/lib/recurly/resources/billing_info.rb +62 -0
- data/lib/recurly/resources/coupon.rb +110 -0
- data/lib/recurly/resources/coupon_discount.rb +22 -0
- data/lib/recurly/resources/coupon_redemption.rb +46 -0
- data/lib/recurly/resources/credit_payment.rb +62 -0
- data/lib/recurly/resources/error.rb +18 -0
- data/lib/recurly/resources/error_may_have_transaction.rb +22 -0
- data/lib/recurly/resources/invoice.rb +138 -0
- data/lib/recurly/resources/invoice_collection.rb +18 -0
- data/lib/recurly/resources/line_item.rb +166 -0
- data/lib/recurly/resources/plan.rb +86 -0
- data/lib/recurly/resources/settings.rb +18 -0
- data/lib/recurly/resources/shipping_address.rb +74 -0
- data/lib/recurly/resources/site.rb +46 -0
- data/lib/recurly/resources/subscription.rb +134 -0
- data/lib/recurly/resources/subscription_add_on.rb +42 -0
- data/lib/recurly/resources/subscription_change.rb +54 -0
- data/lib/recurly/resources/tax_info.rb +18 -0
- data/lib/recurly/resources/transaction.rb +146 -0
- data/lib/recurly/resources/unique_coupon_code.rb +38 -0
- data/lib/recurly/resources/user.rb +38 -0
- data/lib/recurly/schema/json_deserializer.rb +53 -0
- data/lib/recurly/schema/json_parser.rb +71 -0
- data/lib/recurly/schema/request_caster.rb +66 -0
- data/lib/recurly/schema/schema_factory.rb +50 -0
- data/lib/recurly/schema/schema_validator.rb +125 -0
- data/lib/recurly/schema.rb +114 -0
- data/lib/recurly/version.rb +1 -10
- data/lib/recurly.rb +14 -145
- data/recurly.gemspec +32 -0
- data/scripts/build +4 -0
- data/scripts/clean +6 -0
- data/scripts/test +3 -0
- metadata +129 -173
- data/lib/recurly/account.rb +0 -209
- data/lib/recurly/account_acquisition.rb +0 -27
- data/lib/recurly/account_balance.rb +0 -21
- data/lib/recurly/add_on.rb +0 -46
- data/lib/recurly/address.rb +0 -25
- data/lib/recurly/adjustment.rb +0 -81
- data/lib/recurly/api/errors.rb +0 -208
- data/lib/recurly/api/net_http_adapter.rb +0 -111
- data/lib/recurly/api.rb +0 -110
- data/lib/recurly/billing_info.rb +0 -113
- data/lib/recurly/coupon.rb +0 -136
- data/lib/recurly/credit_payment.rb +0 -32
- data/lib/recurly/custom_field.rb +0 -15
- data/lib/recurly/delivery.rb +0 -19
- data/lib/recurly/error.rb +0 -13
- data/lib/recurly/gift_card.rb +0 -85
- data/lib/recurly/helper.rb +0 -51
- data/lib/recurly/invoice.rb +0 -304
- data/lib/recurly/invoice_collection.rb +0 -14
- data/lib/recurly/item.rb +0 -36
- data/lib/recurly/js.rb +0 -14
- data/lib/recurly/juris_detail.rb +0 -15
- data/lib/recurly/measured_unit.rb +0 -16
- data/lib/recurly/money.rb +0 -120
- data/lib/recurly/note.rb +0 -14
- data/lib/recurly/plan.rb +0 -43
- data/lib/recurly/purchase.rb +0 -238
- data/lib/recurly/redemption.rb +0 -46
- data/lib/recurly/resource/association.rb +0 -16
- data/lib/recurly/resource/errors.rb +0 -20
- data/lib/recurly/resource/pager.rb +0 -313
- data/lib/recurly/shipping_address.rb +0 -26
- data/lib/recurly/shipping_fee.rb +0 -17
- data/lib/recurly/shipping_method.rb +0 -13
- data/lib/recurly/subscription/add_ons.rb +0 -82
- data/lib/recurly/subscription.rb +0 -366
- data/lib/recurly/subscription_add_on.rb +0 -58
- data/lib/recurly/tax_detail.rb +0 -18
- data/lib/recurly/tax_type.rb +0 -13
- data/lib/recurly/tier.rb +0 -18
- data/lib/recurly/transaction/errors.rb +0 -115
- data/lib/recurly/transaction.rb +0 -131
- data/lib/recurly/usage.rb +0 -28
- data/lib/recurly/verify.rb +0 -12
- data/lib/recurly/webhook/account_notification.rb +0 -13
- data/lib/recurly/webhook/billing_info_update_failed_notification.rb +0 -6
- data/lib/recurly/webhook/billing_info_updated_notification.rb +0 -6
- data/lib/recurly/webhook/canceled_account_notification.rb +0 -6
- data/lib/recurly/webhook/canceled_gift_card_notification.rb +0 -6
- data/lib/recurly/webhook/canceled_subscription_notification.rb +0 -6
- data/lib/recurly/webhook/closed_credit_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/closed_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/credit_payment_notification.rb +0 -12
- data/lib/recurly/webhook/deactivated_item_notification.rb +0 -6
- data/lib/recurly/webhook/deleted_shipping_address_notification.rb +0 -6
- data/lib/recurly/webhook/dunning_notification.rb +0 -14
- data/lib/recurly/webhook/expired_subscription_notification.rb +0 -6
- data/lib/recurly/webhook/failed_charge_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/failed_payment_notification.rb +0 -6
- data/lib/recurly/webhook/fraud_info_updated_notification.rb +0 -6
- data/lib/recurly/webhook/gift_card_notification.rb +0 -8
- data/lib/recurly/webhook/invoice_notification.rb +0 -12
- data/lib/recurly/webhook/item_notification.rb +0 -7
- data/lib/recurly/webhook/low_balance_gift_card_notification.rb +0 -6
- data/lib/recurly/webhook/new_account_notification.rb +0 -6
- data/lib/recurly/webhook/new_charge_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/new_credit_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/new_credit_payment_notification.rb +0 -6
- data/lib/recurly/webhook/new_dunning_event_notification.rb +0 -6
- data/lib/recurly/webhook/new_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/new_item_notification.rb +0 -6
- data/lib/recurly/webhook/new_shipping_address_notification.rb +0 -6
- data/lib/recurly/webhook/new_subscription_notification.rb +0 -6
- data/lib/recurly/webhook/new_usage_notification.rb +0 -8
- data/lib/recurly/webhook/notification.rb +0 -18
- data/lib/recurly/webhook/paid_charge_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/past_due_charge_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/past_due_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/paused_subscription_renewal_notification.rb +0 -6
- data/lib/recurly/webhook/prerenewal_notification.rb +0 -6
- data/lib/recurly/webhook/processing_charge_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/processing_credit_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/processing_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/processing_payment_notification.rb +0 -6
- data/lib/recurly/webhook/purchased_gift_card_notification.rb +0 -7
- data/lib/recurly/webhook/reactivated_account_notification.rb +0 -6
- data/lib/recurly/webhook/reactivated_item_notification.rb +0 -6
- data/lib/recurly/webhook/redeemed_gift_card_notification.rb +0 -7
- data/lib/recurly/webhook/regenerated_gift_card_notification.rb +0 -6
- data/lib/recurly/webhook/renewed_subscription_notification.rb +0 -6
- data/lib/recurly/webhook/reopened_charge_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/reopened_credit_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/scheduled_payment_notification.rb +0 -6
- data/lib/recurly/webhook/scheduled_subscription_pause_notification.rb +0 -6
- data/lib/recurly/webhook/scheduled_subscription_update_notification.rb +0 -6
- data/lib/recurly/webhook/subscription_notification.rb +0 -12
- data/lib/recurly/webhook/subscription_pause_canceled_notification.rb +0 -6
- data/lib/recurly/webhook/subscription_pause_modified_notification.rb +0 -6
- data/lib/recurly/webhook/subscription_paused_notification.rb +0 -6
- data/lib/recurly/webhook/subscription_resumed_notification.rb +0 -6
- data/lib/recurly/webhook/successful_payment_notification.rb +0 -6
- data/lib/recurly/webhook/successful_refund_notification.rb +0 -6
- data/lib/recurly/webhook/transaction_authorized_notification.rb +0 -6
- data/lib/recurly/webhook/transaction_notification.rb +0 -12
- data/lib/recurly/webhook/transaction_status_updated_notification.rb +0 -6
- data/lib/recurly/webhook/updated_account_notification.rb +0 -6
- data/lib/recurly/webhook/updated_balance_gift_card_notification.rb +0 -7
- data/lib/recurly/webhook/updated_gift_card_notification.rb +0 -6
- data/lib/recurly/webhook/updated_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/updated_item_notification.rb +0 -6
- data/lib/recurly/webhook/updated_shipping_address_notification.rb +0 -6
- data/lib/recurly/webhook/updated_subscription_notification.rb +0 -6
- data/lib/recurly/webhook/void_payment_notification.rb +0 -6
- data/lib/recurly/webhook/voided_credit_invoice_notification.rb +0 -6
- data/lib/recurly/webhook/voided_credit_payment_notification.rb +0 -6
- data/lib/recurly/webhook.rb +0 -113
- data/lib/recurly/xml/nokogiri.rb +0 -60
- data/lib/recurly/xml/rexml.rb +0 -52
- data/lib/recurly/xml.rb +0 -122
data/lib/recurly/api.rb
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
module Recurly
|
|
2
|
-
# The API class handles all requests to the Recurly API. While most of its
|
|
3
|
-
# functionality is leveraged by the Resource class, it can be used directly,
|
|
4
|
-
# as well.
|
|
5
|
-
#
|
|
6
|
-
# Requests are made with methods named after the four main HTTP verbs
|
|
7
|
-
# recognized by the Recurly API.
|
|
8
|
-
#
|
|
9
|
-
# @example
|
|
10
|
-
# Recurly::API.get 'accounts' # => #<Net::HTTPOK ...>
|
|
11
|
-
# Recurly::API.post 'accounts', xml_body # => #<Net::HTTPCreated ...>
|
|
12
|
-
# Recurly::API.put 'accounts/1', xml_body # => #<Net::HTTPOK ...>
|
|
13
|
-
# Recurly::API.delete 'accounts/1' # => #<Net::HTTPNoContent ...>
|
|
14
|
-
class API
|
|
15
|
-
require 'recurly/api/errors'
|
|
16
|
-
require 'openssl'
|
|
17
|
-
|
|
18
|
-
@@base_uri = "https://api.recurly.com/v2/"
|
|
19
|
-
@@valid_domains = [".recurly.com"]
|
|
20
|
-
|
|
21
|
-
RECURLY_API_VERSION = '2.29'
|
|
22
|
-
|
|
23
|
-
FORMATS = Helper.hash_with_indifferent_read_access(
|
|
24
|
-
'pdf' => 'application/pdf',
|
|
25
|
-
'xml' => 'application/xml'
|
|
26
|
-
)
|
|
27
|
-
|
|
28
|
-
class << self
|
|
29
|
-
# Additional HTTP headers sent with each API call
|
|
30
|
-
# @return [Hash{String => String}]
|
|
31
|
-
def headers
|
|
32
|
-
@headers ||= { 'Accept' => accept, 'User-Agent' => user_agent, 'X-Api-Version' => RECURLY_API_VERSION }
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
# @return [String, nil] Accept-Language header value
|
|
36
|
-
def accept_language
|
|
37
|
-
headers['Accept-Language']
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
# @param [String] language Accept-Language header value
|
|
41
|
-
def accept_language=(language)
|
|
42
|
-
headers['Accept-Language'] = language
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
# @return [Net::HTTPOK, Net::HTTPResponse]
|
|
46
|
-
# @raise [ResponseError] With a non-2xx status code.
|
|
47
|
-
def head uri, params = {}, options = {}
|
|
48
|
-
request :head, uri, { :params => params || {} }.merge(options)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
# @return [Net::HTTPOK, Net::HTTPResponse]
|
|
52
|
-
# @raise [ResponseError] With a non-2xx status code.
|
|
53
|
-
def get uri, params = {}, options = {}
|
|
54
|
-
request :get, uri, { :params => params || {} }.merge(options)
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
# @return [Net::HTTPCreated, Net::HTTPResponse]
|
|
58
|
-
# @raise [ResponseError] With a non-2xx status code.
|
|
59
|
-
def post uri, body = nil, options = {}
|
|
60
|
-
request :post, uri, { :body => body.to_s }.merge(options)
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
# @return [Net::HTTPOK, Net::HTTPResponse]
|
|
64
|
-
# @raise [ResponseError] With a non-2xx status code.
|
|
65
|
-
def put uri, body = nil, options = {}
|
|
66
|
-
request :put, uri, { :body => body.to_s }.merge(options)
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
# @return [Net::HTTPNoContent, Net::HTTPResponse]
|
|
70
|
-
# @raise [ResponseError] With a non-2xx status code.
|
|
71
|
-
def delete uri, body = nil, options = {}
|
|
72
|
-
request :delete, uri, options
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
# @return [URI::Generic]
|
|
76
|
-
def base_uri
|
|
77
|
-
URI.parse @@base_uri.sub('api', Recurly.subdomain)
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
def validate_uri!(uri)
|
|
81
|
-
domain = @@valid_domains.detect { |d| uri.host.end_with?(d) }
|
|
82
|
-
unless domain
|
|
83
|
-
raise ArgumentError, "URI #{uri} is invalid. You may only make requests to a Recurly domain."
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
# @return [String]
|
|
88
|
-
def user_agent
|
|
89
|
-
agent_string = "Recurly/#{Version}; #{RUBY_DESCRIPTION};"
|
|
90
|
-
|
|
91
|
-
if OpenSSL.const_defined?(:OPENSSL_VERSION)
|
|
92
|
-
"#{agent_string} #{OpenSSL::OPENSSL_VERSION}"
|
|
93
|
-
elsif OpenSSL.const_defined?(:OPENSSL_LIBRARY_VERSION)
|
|
94
|
-
"#{agent_string} #{OpenSSL::OPENSSL_LIBRARY_VERSION}"
|
|
95
|
-
else
|
|
96
|
-
agent_string
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
private
|
|
101
|
-
|
|
102
|
-
def accept
|
|
103
|
-
FORMATS['xml']
|
|
104
|
-
end
|
|
105
|
-
alias content_type accept
|
|
106
|
-
end
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
require 'recurly/api/net_http_adapter'
|
data/lib/recurly/billing_info.rb
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
module Recurly
|
|
2
|
-
# Represents an account's Billing Information. You normally want to use a token when creating billing information.
|
|
3
|
-
#
|
|
4
|
-
# Recurly Documentation: https://dev.recurly.com/docs/create-an-accounts-billing-info-token
|
|
5
|
-
class BillingInfo < Resource
|
|
6
|
-
BANK_ACCOUNT_ATTRIBUTES = %w(name_on_account account_type last_four routing_number).freeze
|
|
7
|
-
CREDIT_CARD_ATTRIBUTES = %w(number verification_value card_type year month first_six last_four).freeze
|
|
8
|
-
AMAZON_ATTRIBUTES = %w(amazon_billing_agreement_id amazon_region).freeze
|
|
9
|
-
PAYPAL_ATTRIBUTES = %w(paypal_billing_agreement_id).freeze
|
|
10
|
-
ROKU_ATTRIBUTES = %w(roku_billing_agreement_id last_four).freeze
|
|
11
|
-
SEPA_ATTRIBUTES = %w(iban last_two).freeze
|
|
12
|
-
BACS_ATTRIBUTES = %w(account_number sort_code type).freeze
|
|
13
|
-
BECS_ATTRIBUTES = %w(account_number bsb_code type).freeze
|
|
14
|
-
|
|
15
|
-
# @return [Account]
|
|
16
|
-
belongs_to :account
|
|
17
|
-
|
|
18
|
-
define_attribute_methods %w(
|
|
19
|
-
uuid
|
|
20
|
-
first_name
|
|
21
|
-
last_name
|
|
22
|
-
company
|
|
23
|
-
address1
|
|
24
|
-
address2
|
|
25
|
-
city
|
|
26
|
-
state
|
|
27
|
-
zip
|
|
28
|
-
country
|
|
29
|
-
phone
|
|
30
|
-
vat_number
|
|
31
|
-
ip_address
|
|
32
|
-
ip_address_country
|
|
33
|
-
token_id
|
|
34
|
-
currency
|
|
35
|
-
geo_code
|
|
36
|
-
updated_at
|
|
37
|
-
external_hpp_type
|
|
38
|
-
gateway_token
|
|
39
|
-
gateway_code
|
|
40
|
-
fraud_session_id
|
|
41
|
-
three_d_secure_action_result_token_id
|
|
42
|
-
transaction_type
|
|
43
|
-
mandate_reference
|
|
44
|
-
tax_identifier
|
|
45
|
-
tax_identifier_type
|
|
46
|
-
primary_payment_method
|
|
47
|
-
backup_payment_method
|
|
48
|
-
cc_bin_country
|
|
49
|
-
) | CREDIT_CARD_ATTRIBUTES | BANK_ACCOUNT_ATTRIBUTES | AMAZON_ATTRIBUTES | PAYPAL_ATTRIBUTES | ROKU_ATTRIBUTES | SEPA_ATTRIBUTES | BACS_ATTRIBUTES | BECS_ATTRIBUTES
|
|
50
|
-
|
|
51
|
-
# Verify an account's stored billing info
|
|
52
|
-
#
|
|
53
|
-
# @param [Hash] gateway_code (optional) is the code for the gateway to use for verification. If unspecified, a gateway will be selected using the normal rules.
|
|
54
|
-
# @return [Transaction]
|
|
55
|
-
# @raise [Invalid] Raise if the account's billing info cannot be verified
|
|
56
|
-
def verify(attrs = {})
|
|
57
|
-
Transaction.from_response API.post("#{path}/verify", attrs.empty? ? nil : Verify.to_xml(attrs))
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
# @return [String]
|
|
61
|
-
def inspect
|
|
62
|
-
attributes = self.class.attribute_names
|
|
63
|
-
case type
|
|
64
|
-
when 'credit_card'
|
|
65
|
-
attributes -= (AMAZON_ATTRIBUTES + PAYPAL_ATTRIBUTES + BANK_ACCOUNT_ATTRIBUTES + ROKU_ATTRIBUTES + SEPA_ATTRIBUTES + BACS_ATTRIBUTES + BECS_ATTRIBUTES)
|
|
66
|
-
attributes |= CREDIT_CARD_ATTRIBUTES
|
|
67
|
-
when 'paypal'
|
|
68
|
-
attributes -= (CREDIT_CARD_ATTRIBUTES | BANK_ACCOUNT_ATTRIBUTES + AMAZON_ATTRIBUTES + ROKU_ATTRIBUTES + SEPA_ATTRIBUTES + BACS_ATTRIBUTES + BECS_ATTRIBUTES)
|
|
69
|
-
when 'amazon'
|
|
70
|
-
attributes -= (CREDIT_CARD_ATTRIBUTES | BANK_ACCOUNT_ATTRIBUTES + PAYPAL_ATTRIBUTES + ROKU_ATTRIBUTES + SEPA_ATTRIBUTES + BACS_ATTRIBUTES + BECS_ATTRIBUTES)
|
|
71
|
-
when 'bank_account'
|
|
72
|
-
attributes -= (CREDIT_CARD_ATTRIBUTES + PAYPAL_ATTRIBUTES + AMAZON_ATTRIBUTES + ROKU_ATTRIBUTES + SEPA_ATTRIBUTES + BACS_ATTRIBUTES + BECS_ATTRIBUTES)
|
|
73
|
-
attributes |= BANK_ACCOUNT_ATTRIBUTES
|
|
74
|
-
when 'roku'
|
|
75
|
-
attributes -= (CREDIT_CARD_ATTRIBUTES + PAYPAL_ATTRIBUTES + AMAZON_ATTRIBUTES + BANK_ACCOUNT_ATTRIBUTES + SEPA_ATTRIBUTES + BACS_ATTRIBUTES + BECS_ATTRIBUTES)
|
|
76
|
-
attributes |= ROKU_ATTRIBUTES
|
|
77
|
-
when 'sepa'
|
|
78
|
-
attributes -= (CREDIT_CARD_ATTRIBUTES + PAYPAL_ATTRIBUTES + AMAZON_ATTRIBUTES + BANK_ACCOUNT_ATTRIBUTES + ROKU_ATTRIBUTES + BACS_ATTRIBUTES + BECS_ATTRIBUTES)
|
|
79
|
-
attributes |= SEPA_ATTRIBUTES
|
|
80
|
-
when 'bacs'
|
|
81
|
-
attributes -= (CREDIT_CARD_ATTRIBUTES + PAYPAL_ATTRIBUTES + AMAZON_ATTRIBUTES + BANK_ACCOUNT_ATTRIBUTES + ROKU_ATTRIBUTES + SEPA_ATTRIBUTES + BECS_ATTRIBUTES)
|
|
82
|
-
attributes |= BACS_ATTRIBUTES
|
|
83
|
-
when 'becs'
|
|
84
|
-
attributes -= (CREDIT_CARD_ATTRIBUTES + PAYPAL_ATTRIBUTES + AMAZON_ATTRIBUTES + BANK_ACCOUNT_ATTRIBUTES + ROKU_ATTRIBUTES + SEPA_ATTRIBUTES + BACS_ATTRIBUTES)
|
|
85
|
-
attributes |= BECS_ATTRIBUTES
|
|
86
|
-
end
|
|
87
|
-
super attributes
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
# @return ["credit_card", "paypal", "amazon", "bank_account", "roku", "sepa", "bacs", "becs", nil] The type of billing info.
|
|
91
|
-
def type
|
|
92
|
-
self[:type] || @type
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
class << self
|
|
96
|
-
# Overrides the inherited member_path method to allow for billing info's
|
|
97
|
-
# irregular URL structure.
|
|
98
|
-
#
|
|
99
|
-
# @return [String] The relative path to an account's billing info from the
|
|
100
|
-
# API's base URI.
|
|
101
|
-
# @param uuid [String]
|
|
102
|
-
# @example
|
|
103
|
-
# Recurly::BillingInfo.member_path "code"
|
|
104
|
-
# # => "accounts/code/billing_info"
|
|
105
|
-
def member_path uuid
|
|
106
|
-
"accounts/#{uuid}/billing_info"
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
# Billing info is only writeable through an {Account} instance.
|
|
111
|
-
embedded!
|
|
112
|
-
end
|
|
113
|
-
end
|
data/lib/recurly/coupon.rb
DELETED
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
module Recurly
|
|
2
|
-
|
|
3
|
-
# Recurly Documentation: https://dev.recurly.com/docs/list-active-coupons
|
|
4
|
-
class Coupon < Resource
|
|
5
|
-
BULK = 'bulk'.freeze
|
|
6
|
-
SINGLE_CODE = 'single_code'.freeze
|
|
7
|
-
|
|
8
|
-
# @macro [attach] scope
|
|
9
|
-
# @scope class
|
|
10
|
-
# @return [Pager<Coupon>] A pager that yields +$1+ coupons.
|
|
11
|
-
scope :redeemable, :state => :redeemable
|
|
12
|
-
scope :expired, :state => :expired
|
|
13
|
-
scope :maxed_out, :state => :maxed_out
|
|
14
|
-
|
|
15
|
-
# @return [Pager<Redemption>, []] A pager that yields Redemptions
|
|
16
|
-
has_many :redemptions
|
|
17
|
-
|
|
18
|
-
# @return [Pager<Coupon>, []] A pager that yields coupon-code type Coupons
|
|
19
|
-
has_many :unique_coupon_codes, class_name: :Coupon
|
|
20
|
-
|
|
21
|
-
define_attribute_methods %w(
|
|
22
|
-
id
|
|
23
|
-
coupon_code
|
|
24
|
-
name
|
|
25
|
-
state
|
|
26
|
-
discount_type
|
|
27
|
-
discount_percent
|
|
28
|
-
discount_in_cents
|
|
29
|
-
redeem_by_date
|
|
30
|
-
single_use
|
|
31
|
-
applies_for_months
|
|
32
|
-
duration
|
|
33
|
-
temporal_unit
|
|
34
|
-
temporal_amount
|
|
35
|
-
max_redemptions
|
|
36
|
-
max_redemptions_per_account
|
|
37
|
-
applies_to_all_plans
|
|
38
|
-
created_at
|
|
39
|
-
updated_at
|
|
40
|
-
plan_codes
|
|
41
|
-
description
|
|
42
|
-
invoice_description
|
|
43
|
-
applies_to_non_plan_charges
|
|
44
|
-
redemption_resource
|
|
45
|
-
coupon_type
|
|
46
|
-
unique_template_code
|
|
47
|
-
free_trial_amount
|
|
48
|
-
free_trial_unit
|
|
49
|
-
applies_to_all_items
|
|
50
|
-
item_codes
|
|
51
|
-
)
|
|
52
|
-
alias to_param coupon_code
|
|
53
|
-
|
|
54
|
-
# Redeem a coupon with a given account or account code.
|
|
55
|
-
#
|
|
56
|
-
# @return [true]
|
|
57
|
-
# @param account_or_code [Account, String]
|
|
58
|
-
# @param currency [String] Three-letter currency code
|
|
59
|
-
# @param extra_opts [Hash] extra options that go into the {Redemption}
|
|
60
|
-
# @example
|
|
61
|
-
# coupon = Coupon.find(coupon_code)
|
|
62
|
-
# coupon.redeem(account_code, 'USD', subscription_uuid: 'ab3b1dbabc3195')
|
|
63
|
-
#
|
|
64
|
-
# coupon = Coupon.find(coupon_code)
|
|
65
|
-
# account = Account.find(account_code)
|
|
66
|
-
# coupon.redeem(account)
|
|
67
|
-
def redeem account_or_code, currency = nil, extra_opts={}
|
|
68
|
-
return false unless link? :redeem
|
|
69
|
-
|
|
70
|
-
account_code = if account_or_code.is_a? Account
|
|
71
|
-
account_or_code.account_code
|
|
72
|
-
else
|
|
73
|
-
account_or_code
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
redemption_options = {
|
|
77
|
-
:account_code => account_code,
|
|
78
|
-
:currency => currency || Recurly.default_currency
|
|
79
|
-
}.merge(extra_opts)
|
|
80
|
-
|
|
81
|
-
redemption = Redemption.new(redemption_options)
|
|
82
|
-
|
|
83
|
-
Redemption.from_response follow_link(:redeem,
|
|
84
|
-
:body => redemption.to_xml
|
|
85
|
-
)
|
|
86
|
-
rescue API::UnprocessableEntity => e
|
|
87
|
-
redemption.apply_errors e
|
|
88
|
-
redemption
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
# Generate unique coupon codes on the server. This is based on the unique_template_code.
|
|
92
|
-
#
|
|
93
|
-
# @param amount [Integer]
|
|
94
|
-
# @return [Pager<Coupon>] A pager that yields the coupon-code type Coupons
|
|
95
|
-
# @example
|
|
96
|
-
# unique_codes = coupon.generate(10)
|
|
97
|
-
# unique_codes.each do |c|
|
|
98
|
-
# puts c.coupon_code
|
|
99
|
-
# end
|
|
100
|
-
def generate(amount)
|
|
101
|
-
builder = XML.new("<coupon/>")
|
|
102
|
-
builder.add_element 'number_of_unique_codes', amount
|
|
103
|
-
|
|
104
|
-
resp = follow_link(:generate,
|
|
105
|
-
:body => builder.to_s
|
|
106
|
-
)
|
|
107
|
-
|
|
108
|
-
Pager.new(Recurly::Coupon, uri: resp['location'], parent: self, etag: resp['ETag'])
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
# Redeem a coupon on the given account code
|
|
112
|
-
#
|
|
113
|
-
# @param account_code [String] Acccount's account code
|
|
114
|
-
# @param currency [String] Three-letter currency code
|
|
115
|
-
# @raise [Invalid] If the coupon cannot be redeemed
|
|
116
|
-
# @return [Redemption] The Coupon Redemption
|
|
117
|
-
def redeem!(account_code, currency = nil)
|
|
118
|
-
redemption = redeem(account_code, currency)
|
|
119
|
-
raise Invalid.new(self) unless redemption && redemption.persisted?
|
|
120
|
-
redemption
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
# Restores the coupon
|
|
124
|
-
def restore!
|
|
125
|
-
return false unless link? :restore
|
|
126
|
-
reload follow_link(:restore, body: self.to_xml(delta: true))
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
# Will return true if there are no limits on number of redemptions for this Coupon.
|
|
130
|
-
#
|
|
131
|
-
# @return [true, false]
|
|
132
|
-
def unlimited_redemptions_per_account?
|
|
133
|
-
!max_redemptions_per_account
|
|
134
|
-
end
|
|
135
|
-
end
|
|
136
|
-
end
|
|
@@ -1,32 +0,0 @@
|
|
|
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
|
-
applied_to_invoice_number
|
|
16
|
-
currency
|
|
17
|
-
created_at
|
|
18
|
-
original_credit_payment
|
|
19
|
-
original_credit_payment_uuid
|
|
20
|
-
original_invoice_number
|
|
21
|
-
refund_transaction
|
|
22
|
-
refund_transaction_uuid
|
|
23
|
-
updated_at
|
|
24
|
-
uuid
|
|
25
|
-
voided_at
|
|
26
|
-
)
|
|
27
|
-
alias to_param uuid
|
|
28
|
-
|
|
29
|
-
# @return ["charge", "credit", nil] The type of credit payment.
|
|
30
|
-
attr_reader :type
|
|
31
|
-
end
|
|
32
|
-
end
|
data/lib/recurly/custom_field.rb
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
module Recurly
|
|
2
|
-
# Recurly Documentation: https://dev.recurly.com/docs/custom-fields
|
|
3
|
-
class CustomField < Resource
|
|
4
|
-
|
|
5
|
-
define_attribute_methods %w(
|
|
6
|
-
name
|
|
7
|
-
value
|
|
8
|
-
)
|
|
9
|
-
|
|
10
|
-
# include the name with the serialized field, even though it can't change
|
|
11
|
-
def xml_keys
|
|
12
|
-
attributes.keys
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
data/lib/recurly/delivery.rb
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
module Recurly
|
|
2
|
-
# Delivery objects are only used with GiftCards.
|
|
3
|
-
#
|
|
4
|
-
# Recurly Documentation: https://dev.recurly.com/docs/gift-card-object
|
|
5
|
-
class Delivery < Resource
|
|
6
|
-
# @return [Address, nil]
|
|
7
|
-
has_one :address
|
|
8
|
-
|
|
9
|
-
define_attribute_methods %w(
|
|
10
|
-
deliver_at
|
|
11
|
-
email_address
|
|
12
|
-
first_name
|
|
13
|
-
gifter_name
|
|
14
|
-
last_name
|
|
15
|
-
method
|
|
16
|
-
personal_message
|
|
17
|
-
)
|
|
18
|
-
end
|
|
19
|
-
end
|
data/lib/recurly/error.rb
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
module Recurly
|
|
2
|
-
# The exception class from which all Recurly exceptions inherit.
|
|
3
|
-
class Error < StandardError
|
|
4
|
-
def set_message message
|
|
5
|
-
@message = message
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
# @return [String]
|
|
9
|
-
def to_s
|
|
10
|
-
defined? @message and @message or super
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|