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.
Files changed (211) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +14 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +5 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +158 -110
  8. data/Rakefile +6 -0
  9. data/bin/bundle +105 -0
  10. data/bin/coderay +29 -0
  11. data/bin/console +14 -0
  12. data/bin/htmldiff +29 -0
  13. data/bin/ldiff +29 -0
  14. data/bin/pry +29 -0
  15. data/bin/rake +29 -0
  16. data/bin/rspec +29 -0
  17. data/bin/setup +8 -0
  18. data/bin/yard +29 -0
  19. data/bin/yardoc +29 -0
  20. data/bin/yri +29 -0
  21. data/lib/data/ca-certificates.crt +31 -0
  22. data/lib/recurly/client/operations.rb +935 -0
  23. data/lib/recurly/client.rb +198 -0
  24. data/lib/recurly/errors/api_errors.rb +35 -0
  25. data/lib/recurly/errors/network_errors.rb +8 -0
  26. data/lib/recurly/errors.rb +34 -0
  27. data/lib/recurly/pager.rb +119 -0
  28. data/lib/recurly/request.rb +30 -0
  29. data/lib/recurly/requests/account_acquisition_updatable.rb +22 -0
  30. data/lib/recurly/requests/account_create_only.rb +18 -0
  31. data/lib/recurly/requests/account_updatable.rb +50 -0
  32. data/lib/recurly/requests/add_on_create.rb +38 -0
  33. data/lib/recurly/requests/add_on_update.rb +38 -0
  34. data/lib/recurly/requests/address.rb +42 -0
  35. data/lib/recurly/requests/billing_info_create.rb +58 -0
  36. data/lib/recurly/requests/coupon_create_only.rb +66 -0
  37. data/lib/recurly/requests/coupon_updatable.rb +30 -0
  38. data/lib/recurly/requests/create_account.rb +62 -0
  39. data/lib/recurly/requests/create_coupon.rb +90 -0
  40. data/lib/recurly/requests/invoice_create.rb +42 -0
  41. data/lib/recurly/requests/invoice_refund.rb +30 -0
  42. data/lib/recurly/requests/line_item_create.rb +46 -0
  43. data/lib/recurly/requests/plan_create.rb +66 -0
  44. data/lib/recurly/requests/plan_update.rb +70 -0
  45. data/lib/recurly/requests/shipping_address_create.rb +58 -0
  46. data/lib/recurly/requests/shipping_address_update.rb +62 -0
  47. data/lib/recurly/requests/subscription_add_on_create.rb +22 -0
  48. data/lib/recurly/requests/subscription_change_create.rb +42 -0
  49. data/lib/recurly/requests/subscription_create.rb +86 -0
  50. data/lib/recurly/requests/subscription_update.rb +42 -0
  51. data/lib/recurly/requests/update_coupon.rb +30 -0
  52. data/lib/recurly/resource.rb +16 -1103
  53. data/lib/recurly/resources/account.rb +86 -0
  54. data/lib/recurly/resources/account_acquisition.rb +42 -0
  55. data/lib/recurly/resources/account_balance.rb +22 -0
  56. data/lib/recurly/resources/account_note.rb +30 -0
  57. data/lib/recurly/resources/add_on.rb +62 -0
  58. data/lib/recurly/resources/address.rb +42 -0
  59. data/lib/recurly/resources/billing_info.rb +62 -0
  60. data/lib/recurly/resources/coupon.rb +110 -0
  61. data/lib/recurly/resources/coupon_discount.rb +22 -0
  62. data/lib/recurly/resources/coupon_redemption.rb +46 -0
  63. data/lib/recurly/resources/credit_payment.rb +62 -0
  64. data/lib/recurly/resources/error.rb +18 -0
  65. data/lib/recurly/resources/error_may_have_transaction.rb +22 -0
  66. data/lib/recurly/resources/invoice.rb +138 -0
  67. data/lib/recurly/resources/invoice_collection.rb +18 -0
  68. data/lib/recurly/resources/line_item.rb +166 -0
  69. data/lib/recurly/resources/plan.rb +86 -0
  70. data/lib/recurly/resources/settings.rb +18 -0
  71. data/lib/recurly/resources/shipping_address.rb +74 -0
  72. data/lib/recurly/resources/site.rb +46 -0
  73. data/lib/recurly/resources/subscription.rb +134 -0
  74. data/lib/recurly/resources/subscription_add_on.rb +42 -0
  75. data/lib/recurly/resources/subscription_change.rb +54 -0
  76. data/lib/recurly/resources/tax_info.rb +18 -0
  77. data/lib/recurly/resources/transaction.rb +146 -0
  78. data/lib/recurly/resources/unique_coupon_code.rb +38 -0
  79. data/lib/recurly/resources/user.rb +38 -0
  80. data/lib/recurly/schema/json_deserializer.rb +53 -0
  81. data/lib/recurly/schema/json_parser.rb +71 -0
  82. data/lib/recurly/schema/request_caster.rb +66 -0
  83. data/lib/recurly/schema/schema_factory.rb +50 -0
  84. data/lib/recurly/schema/schema_validator.rb +125 -0
  85. data/lib/recurly/schema.rb +114 -0
  86. data/lib/recurly/version.rb +1 -10
  87. data/lib/recurly.rb +14 -145
  88. data/recurly.gemspec +32 -0
  89. data/scripts/build +4 -0
  90. data/scripts/clean +6 -0
  91. data/scripts/test +3 -0
  92. metadata +129 -173
  93. data/lib/recurly/account.rb +0 -209
  94. data/lib/recurly/account_acquisition.rb +0 -27
  95. data/lib/recurly/account_balance.rb +0 -21
  96. data/lib/recurly/add_on.rb +0 -46
  97. data/lib/recurly/address.rb +0 -25
  98. data/lib/recurly/adjustment.rb +0 -81
  99. data/lib/recurly/api/errors.rb +0 -208
  100. data/lib/recurly/api/net_http_adapter.rb +0 -111
  101. data/lib/recurly/api.rb +0 -110
  102. data/lib/recurly/billing_info.rb +0 -113
  103. data/lib/recurly/coupon.rb +0 -136
  104. data/lib/recurly/credit_payment.rb +0 -32
  105. data/lib/recurly/custom_field.rb +0 -15
  106. data/lib/recurly/delivery.rb +0 -19
  107. data/lib/recurly/error.rb +0 -13
  108. data/lib/recurly/gift_card.rb +0 -85
  109. data/lib/recurly/helper.rb +0 -51
  110. data/lib/recurly/invoice.rb +0 -304
  111. data/lib/recurly/invoice_collection.rb +0 -14
  112. data/lib/recurly/item.rb +0 -36
  113. data/lib/recurly/js.rb +0 -14
  114. data/lib/recurly/juris_detail.rb +0 -15
  115. data/lib/recurly/measured_unit.rb +0 -16
  116. data/lib/recurly/money.rb +0 -120
  117. data/lib/recurly/note.rb +0 -14
  118. data/lib/recurly/plan.rb +0 -43
  119. data/lib/recurly/purchase.rb +0 -238
  120. data/lib/recurly/redemption.rb +0 -46
  121. data/lib/recurly/resource/association.rb +0 -16
  122. data/lib/recurly/resource/errors.rb +0 -20
  123. data/lib/recurly/resource/pager.rb +0 -313
  124. data/lib/recurly/shipping_address.rb +0 -26
  125. data/lib/recurly/shipping_fee.rb +0 -17
  126. data/lib/recurly/shipping_method.rb +0 -13
  127. data/lib/recurly/subscription/add_ons.rb +0 -82
  128. data/lib/recurly/subscription.rb +0 -366
  129. data/lib/recurly/subscription_add_on.rb +0 -58
  130. data/lib/recurly/tax_detail.rb +0 -18
  131. data/lib/recurly/tax_type.rb +0 -13
  132. data/lib/recurly/tier.rb +0 -18
  133. data/lib/recurly/transaction/errors.rb +0 -115
  134. data/lib/recurly/transaction.rb +0 -131
  135. data/lib/recurly/usage.rb +0 -28
  136. data/lib/recurly/verify.rb +0 -12
  137. data/lib/recurly/webhook/account_notification.rb +0 -13
  138. data/lib/recurly/webhook/billing_info_update_failed_notification.rb +0 -6
  139. data/lib/recurly/webhook/billing_info_updated_notification.rb +0 -6
  140. data/lib/recurly/webhook/canceled_account_notification.rb +0 -6
  141. data/lib/recurly/webhook/canceled_gift_card_notification.rb +0 -6
  142. data/lib/recurly/webhook/canceled_subscription_notification.rb +0 -6
  143. data/lib/recurly/webhook/closed_credit_invoice_notification.rb +0 -6
  144. data/lib/recurly/webhook/closed_invoice_notification.rb +0 -6
  145. data/lib/recurly/webhook/credit_payment_notification.rb +0 -12
  146. data/lib/recurly/webhook/deactivated_item_notification.rb +0 -6
  147. data/lib/recurly/webhook/deleted_shipping_address_notification.rb +0 -6
  148. data/lib/recurly/webhook/dunning_notification.rb +0 -14
  149. data/lib/recurly/webhook/expired_subscription_notification.rb +0 -6
  150. data/lib/recurly/webhook/failed_charge_invoice_notification.rb +0 -6
  151. data/lib/recurly/webhook/failed_payment_notification.rb +0 -6
  152. data/lib/recurly/webhook/fraud_info_updated_notification.rb +0 -6
  153. data/lib/recurly/webhook/gift_card_notification.rb +0 -8
  154. data/lib/recurly/webhook/invoice_notification.rb +0 -12
  155. data/lib/recurly/webhook/item_notification.rb +0 -7
  156. data/lib/recurly/webhook/low_balance_gift_card_notification.rb +0 -6
  157. data/lib/recurly/webhook/new_account_notification.rb +0 -6
  158. data/lib/recurly/webhook/new_charge_invoice_notification.rb +0 -6
  159. data/lib/recurly/webhook/new_credit_invoice_notification.rb +0 -6
  160. data/lib/recurly/webhook/new_credit_payment_notification.rb +0 -6
  161. data/lib/recurly/webhook/new_dunning_event_notification.rb +0 -6
  162. data/lib/recurly/webhook/new_invoice_notification.rb +0 -6
  163. data/lib/recurly/webhook/new_item_notification.rb +0 -6
  164. data/lib/recurly/webhook/new_shipping_address_notification.rb +0 -6
  165. data/lib/recurly/webhook/new_subscription_notification.rb +0 -6
  166. data/lib/recurly/webhook/new_usage_notification.rb +0 -8
  167. data/lib/recurly/webhook/notification.rb +0 -18
  168. data/lib/recurly/webhook/paid_charge_invoice_notification.rb +0 -6
  169. data/lib/recurly/webhook/past_due_charge_invoice_notification.rb +0 -6
  170. data/lib/recurly/webhook/past_due_invoice_notification.rb +0 -6
  171. data/lib/recurly/webhook/paused_subscription_renewal_notification.rb +0 -6
  172. data/lib/recurly/webhook/prerenewal_notification.rb +0 -6
  173. data/lib/recurly/webhook/processing_charge_invoice_notification.rb +0 -6
  174. data/lib/recurly/webhook/processing_credit_invoice_notification.rb +0 -6
  175. data/lib/recurly/webhook/processing_invoice_notification.rb +0 -6
  176. data/lib/recurly/webhook/processing_payment_notification.rb +0 -6
  177. data/lib/recurly/webhook/purchased_gift_card_notification.rb +0 -7
  178. data/lib/recurly/webhook/reactivated_account_notification.rb +0 -6
  179. data/lib/recurly/webhook/reactivated_item_notification.rb +0 -6
  180. data/lib/recurly/webhook/redeemed_gift_card_notification.rb +0 -7
  181. data/lib/recurly/webhook/regenerated_gift_card_notification.rb +0 -6
  182. data/lib/recurly/webhook/renewed_subscription_notification.rb +0 -6
  183. data/lib/recurly/webhook/reopened_charge_invoice_notification.rb +0 -6
  184. data/lib/recurly/webhook/reopened_credit_invoice_notification.rb +0 -6
  185. data/lib/recurly/webhook/scheduled_payment_notification.rb +0 -6
  186. data/lib/recurly/webhook/scheduled_subscription_pause_notification.rb +0 -6
  187. data/lib/recurly/webhook/scheduled_subscription_update_notification.rb +0 -6
  188. data/lib/recurly/webhook/subscription_notification.rb +0 -12
  189. data/lib/recurly/webhook/subscription_pause_canceled_notification.rb +0 -6
  190. data/lib/recurly/webhook/subscription_pause_modified_notification.rb +0 -6
  191. data/lib/recurly/webhook/subscription_paused_notification.rb +0 -6
  192. data/lib/recurly/webhook/subscription_resumed_notification.rb +0 -6
  193. data/lib/recurly/webhook/successful_payment_notification.rb +0 -6
  194. data/lib/recurly/webhook/successful_refund_notification.rb +0 -6
  195. data/lib/recurly/webhook/transaction_authorized_notification.rb +0 -6
  196. data/lib/recurly/webhook/transaction_notification.rb +0 -12
  197. data/lib/recurly/webhook/transaction_status_updated_notification.rb +0 -6
  198. data/lib/recurly/webhook/updated_account_notification.rb +0 -6
  199. data/lib/recurly/webhook/updated_balance_gift_card_notification.rb +0 -7
  200. data/lib/recurly/webhook/updated_gift_card_notification.rb +0 -6
  201. data/lib/recurly/webhook/updated_invoice_notification.rb +0 -6
  202. data/lib/recurly/webhook/updated_item_notification.rb +0 -6
  203. data/lib/recurly/webhook/updated_shipping_address_notification.rb +0 -6
  204. data/lib/recurly/webhook/updated_subscription_notification.rb +0 -6
  205. data/lib/recurly/webhook/void_payment_notification.rb +0 -6
  206. data/lib/recurly/webhook/voided_credit_invoice_notification.rb +0 -6
  207. data/lib/recurly/webhook/voided_credit_payment_notification.rb +0 -6
  208. data/lib/recurly/webhook.rb +0 -113
  209. data/lib/recurly/xml/nokogiri.rb +0 -60
  210. data/lib/recurly/xml/rexml.rb +0 -52
  211. 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'
@@ -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
@@ -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
@@ -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
@@ -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