recurly 2.18.15 → 3.0.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (209) 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.rb +14 -145
  23. data/lib/recurly/client.rb +198 -0
  24. data/lib/recurly/client/operations.rb +935 -0
  25. data/lib/recurly/errors.rb +34 -0
  26. data/lib/recurly/errors/api_errors.rb +35 -0
  27. data/lib/recurly/errors/network_errors.rb +8 -0
  28. data/lib/recurly/pager.rb +119 -0
  29. data/lib/recurly/request.rb +30 -0
  30. data/lib/recurly/requests/account_acquisition_updatable.rb +22 -0
  31. data/lib/recurly/requests/account_create_only.rb +18 -0
  32. data/lib/recurly/requests/account_updatable.rb +50 -0
  33. data/lib/recurly/requests/add_on_create.rb +38 -0
  34. data/lib/recurly/requests/add_on_update.rb +38 -0
  35. data/lib/recurly/requests/address.rb +42 -0
  36. data/lib/recurly/requests/billing_info_create.rb +58 -0
  37. data/lib/recurly/requests/coupon_create_only.rb +66 -0
  38. data/lib/recurly/requests/coupon_updatable.rb +30 -0
  39. data/lib/recurly/requests/create_account.rb +62 -0
  40. data/lib/recurly/requests/create_coupon.rb +90 -0
  41. data/lib/recurly/requests/invoice_create.rb +42 -0
  42. data/lib/recurly/requests/invoice_refund.rb +30 -0
  43. data/lib/recurly/requests/line_item_create.rb +46 -0
  44. data/lib/recurly/requests/plan_create.rb +66 -0
  45. data/lib/recurly/requests/plan_update.rb +70 -0
  46. data/lib/recurly/requests/shipping_address_create.rb +58 -0
  47. data/lib/recurly/requests/shipping_address_update.rb +62 -0
  48. data/lib/recurly/requests/subscription_add_on_create.rb +22 -0
  49. data/lib/recurly/requests/subscription_change_create.rb +42 -0
  50. data/lib/recurly/requests/subscription_create.rb +86 -0
  51. data/lib/recurly/requests/subscription_update.rb +42 -0
  52. data/lib/recurly/requests/update_coupon.rb +30 -0
  53. data/lib/recurly/resource.rb +16 -1103
  54. data/lib/recurly/resources/account.rb +86 -0
  55. data/lib/recurly/resources/account_acquisition.rb +42 -0
  56. data/lib/recurly/resources/account_balance.rb +22 -0
  57. data/lib/recurly/resources/account_note.rb +30 -0
  58. data/lib/recurly/resources/add_on.rb +62 -0
  59. data/lib/recurly/resources/address.rb +42 -0
  60. data/lib/recurly/resources/billing_info.rb +62 -0
  61. data/lib/recurly/resources/coupon.rb +110 -0
  62. data/lib/recurly/resources/coupon_discount.rb +22 -0
  63. data/lib/recurly/resources/coupon_redemption.rb +46 -0
  64. data/lib/recurly/resources/credit_payment.rb +62 -0
  65. data/lib/recurly/resources/error.rb +18 -0
  66. data/lib/recurly/resources/error_may_have_transaction.rb +22 -0
  67. data/lib/recurly/resources/invoice.rb +138 -0
  68. data/lib/recurly/resources/invoice_collection.rb +18 -0
  69. data/lib/recurly/resources/line_item.rb +166 -0
  70. data/lib/recurly/resources/plan.rb +86 -0
  71. data/lib/recurly/resources/settings.rb +18 -0
  72. data/lib/recurly/resources/shipping_address.rb +74 -0
  73. data/lib/recurly/resources/site.rb +46 -0
  74. data/lib/recurly/resources/subscription.rb +134 -0
  75. data/lib/recurly/resources/subscription_add_on.rb +42 -0
  76. data/lib/recurly/resources/subscription_change.rb +54 -0
  77. data/lib/recurly/resources/tax_info.rb +18 -0
  78. data/lib/recurly/resources/transaction.rb +146 -0
  79. data/lib/recurly/resources/unique_coupon_code.rb +38 -0
  80. data/lib/recurly/resources/user.rb +38 -0
  81. data/lib/recurly/schema.rb +114 -0
  82. data/lib/recurly/schema/json_deserializer.rb +53 -0
  83. data/lib/recurly/schema/json_parser.rb +71 -0
  84. data/lib/recurly/schema/request_caster.rb +66 -0
  85. data/lib/recurly/schema/schema_factory.rb +50 -0
  86. data/lib/recurly/schema/schema_validator.rb +125 -0
  87. data/lib/recurly/version.rb +1 -10
  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 +121 -245
  93. data/lib/recurly/account.rb +0 -190
  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 -44
  97. data/lib/recurly/address.rb +0 -25
  98. data/lib/recurly/adjustment.rb +0 -81
  99. data/lib/recurly/api.rb +0 -110
  100. data/lib/recurly/api/errors.rb +0 -208
  101. data/lib/recurly/api/net_http_adapter.rb +0 -111
  102. data/lib/recurly/billing_info.rb +0 -109
  103. data/lib/recurly/coupon.rb +0 -134
  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 -297
  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 -234
  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.rb +0 -365
  128. data/lib/recurly/subscription/add_ons.rb +0 -82
  129. data/lib/recurly/subscription_add_on.rb +0 -58
  130. data/lib/recurly/tax_detail.rb +0 -16
  131. data/lib/recurly/tax_type.rb +0 -13
  132. data/lib/recurly/tier.rb +0 -18
  133. data/lib/recurly/transaction.rb +0 -131
  134. data/lib/recurly/transaction/errors.rb +0 -115
  135. data/lib/recurly/usage.rb +0 -28
  136. data/lib/recurly/verify.rb +0 -12
  137. data/lib/recurly/webhook.rb +0 -111
  138. data/lib/recurly/webhook/account_notification.rb +0 -13
  139. data/lib/recurly/webhook/billing_info_update_failed_notification.rb +0 -6
  140. data/lib/recurly/webhook/billing_info_updated_notification.rb +0 -6
  141. data/lib/recurly/webhook/canceled_account_notification.rb +0 -6
  142. data/lib/recurly/webhook/canceled_gift_card_notification.rb +0 -6
  143. data/lib/recurly/webhook/canceled_subscription_notification.rb +0 -6
  144. data/lib/recurly/webhook/closed_credit_invoice_notification.rb +0 -6
  145. data/lib/recurly/webhook/closed_invoice_notification.rb +0 -6
  146. data/lib/recurly/webhook/credit_payment_notification.rb +0 -12
  147. data/lib/recurly/webhook/deactivated_item_notification.rb +0 -6
  148. data/lib/recurly/webhook/deleted_shipping_address_notification.rb +0 -6
  149. data/lib/recurly/webhook/dunning_notification.rb +0 -14
  150. data/lib/recurly/webhook/expired_subscription_notification.rb +0 -6
  151. data/lib/recurly/webhook/failed_charge_invoice_notification.rb +0 -6
  152. data/lib/recurly/webhook/failed_payment_notification.rb +0 -6
  153. data/lib/recurly/webhook/fraud_info_updated_notification.rb +0 -6
  154. data/lib/recurly/webhook/gift_card_notification.rb +0 -8
  155. data/lib/recurly/webhook/invoice_notification.rb +0 -12
  156. data/lib/recurly/webhook/item_notification.rb +0 -7
  157. data/lib/recurly/webhook/low_balance_gift_card_notification.rb +0 -6
  158. data/lib/recurly/webhook/new_account_notification.rb +0 -6
  159. data/lib/recurly/webhook/new_charge_invoice_notification.rb +0 -6
  160. data/lib/recurly/webhook/new_credit_invoice_notification.rb +0 -6
  161. data/lib/recurly/webhook/new_credit_payment_notification.rb +0 -6
  162. data/lib/recurly/webhook/new_dunning_event_notification.rb +0 -6
  163. data/lib/recurly/webhook/new_invoice_notification.rb +0 -6
  164. data/lib/recurly/webhook/new_item_notification.rb +0 -6
  165. data/lib/recurly/webhook/new_shipping_address_notification.rb +0 -6
  166. data/lib/recurly/webhook/new_subscription_notification.rb +0 -6
  167. data/lib/recurly/webhook/new_usage_notification.rb +0 -8
  168. data/lib/recurly/webhook/notification.rb +0 -18
  169. data/lib/recurly/webhook/paid_charge_invoice_notification.rb +0 -6
  170. data/lib/recurly/webhook/past_due_charge_invoice_notification.rb +0 -6
  171. data/lib/recurly/webhook/past_due_invoice_notification.rb +0 -6
  172. data/lib/recurly/webhook/paused_subscription_renewal_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/subscription_notification.rb +0 -12
  188. data/lib/recurly/webhook/subscription_pause_canceled_notification.rb +0 -6
  189. data/lib/recurly/webhook/subscription_pause_modified_notification.rb +0 -6
  190. data/lib/recurly/webhook/subscription_paused_notification.rb +0 -6
  191. data/lib/recurly/webhook/subscription_resumed_notification.rb +0 -6
  192. data/lib/recurly/webhook/successful_payment_notification.rb +0 -6
  193. data/lib/recurly/webhook/successful_refund_notification.rb +0 -6
  194. data/lib/recurly/webhook/transaction_authorized_notification.rb +0 -6
  195. data/lib/recurly/webhook/transaction_notification.rb +0 -12
  196. data/lib/recurly/webhook/transaction_status_updated_notification.rb +0 -6
  197. data/lib/recurly/webhook/updated_account_notification.rb +0 -6
  198. data/lib/recurly/webhook/updated_balance_gift_card_notification.rb +0 -7
  199. data/lib/recurly/webhook/updated_gift_card_notification.rb +0 -6
  200. data/lib/recurly/webhook/updated_invoice_notification.rb +0 -6
  201. data/lib/recurly/webhook/updated_item_notification.rb +0 -6
  202. data/lib/recurly/webhook/updated_shipping_address_notification.rb +0 -6
  203. data/lib/recurly/webhook/updated_subscription_notification.rb +0 -6
  204. data/lib/recurly/webhook/void_payment_notification.rb +0 -6
  205. data/lib/recurly/webhook/voided_credit_invoice_notification.rb +0 -6
  206. data/lib/recurly/webhook/voided_credit_payment_notification.rb +0 -6
  207. data/lib/recurly/xml.rb +0 -122
  208. data/lib/recurly/xml/nokogiri.rb +0 -60
  209. data/lib/recurly/xml/rexml.rb +0 -52
@@ -1,16 +0,0 @@
1
- require 'bigdecimal'
2
-
3
- module Recurly
4
- class TaxDetail < Resource
5
- define_attribute_methods %w(
6
- name
7
- type
8
- tax_rate
9
- tax_in_cents
10
- level
11
- billable
12
- )
13
-
14
- embedded! true
15
- end
16
- end
@@ -1,13 +0,0 @@
1
- module Recurly
2
- class TaxType < Resource
3
- define_attribute_methods %w(
4
- description
5
- tax_in_cents
6
- type
7
- juris_details
8
- tax_classification
9
- )
10
-
11
- embedded! true
12
- end
13
- end
@@ -1,18 +0,0 @@
1
- module Recurly
2
- class Tier < Resource
3
-
4
- belongs_to :add_on
5
- belongs_to :subscription_add_on
6
-
7
- define_attribute_methods %w(
8
- ending_quantity
9
- unit_amount_in_cents
10
- )
11
-
12
- def xml_keys
13
- attributes.keys
14
- end
15
-
16
- embedded! true
17
- end
18
- end
@@ -1,131 +0,0 @@
1
- module Recurly
2
- class Transaction < Resource
3
- require 'recurly/transaction/errors'
4
-
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'
11
- scope :successful, state: 'successful'
12
- scope :failed, state: 'failed'
13
- scope :voided, state: 'voided'
14
-
15
- # @return [Account]
16
- belongs_to :account
17
- # @return [Invoice, nil]
18
- belongs_to :invoice
19
-
20
- # @return [Pager<Subscription>, nil]
21
- has_many :subscriptions
22
-
23
- # @return [Transaction, nil]
24
- has_one :original_transaction, class_name: :Transaction, readonly: true
25
-
26
- define_attribute_methods %w(
27
- id
28
- uuid
29
- action
30
- amount_in_cents
31
- tax_in_cents
32
- currency
33
- payment_method
34
- status
35
- reference
36
- recurring
37
- test
38
- voidable
39
- refundable
40
- cvv_result
41
- avs_result
42
- avs_result_street
43
- avs_result_postal
44
- created_at
45
- updated_at
46
- details
47
- transaction_error
48
- source
49
- ip_address
50
- collected_at
51
- description
52
- tax_exempt
53
- tax_code
54
- accounting_code
55
- fraud
56
- product_code
57
- gateway_type
58
- origin
59
- message
60
- approval_code
61
- date
62
- gateway
63
- gateway_error_codes
64
- invoice_id
65
- invoice_number
66
- invoice_number_prefix
67
- failure_type
68
- billing_phone
69
- billing_postal
70
- billing_country
71
- subscription_id
72
- manually_entered
73
- avalara_transaction_type
74
- avalara_service_type
75
- )
76
- alias to_param uuid
77
- alias fraud_info fraud
78
-
79
- def self.to_xml(attrs)
80
- transaction = new attrs
81
- transaction.to_xml
82
- end
83
-
84
- # @return ["credit", "charge", nil] The type of transaction.
85
- attr_reader :type
86
-
87
- # @see Resource#initialize
88
- def initialize(attributes = {})
89
- super({ :currency => Recurly.default_currency }.merge attributes)
90
- end
91
-
92
- # Saves new records only.
93
- #
94
- # @return [true, false]
95
- # @raise [Recurly::Error] For persisted transactions.
96
- # @see Resource#save
97
- def save
98
- return super if new_record?
99
- raise Recurly::Error, "#{self.class.collection_name} cannot be updated"
100
- end
101
-
102
- # Refunds the transaction.
103
- #
104
- # @return [Transaction, false] The updated original transaction if voided,
105
- # a new refund transaction, false if the transaction isn't voidable or
106
- # refundable.
107
- # @raise [Error] If the refund fails.
108
- # @param amount_in_cents [Integer, nil] The amount (in cents) to refund
109
- # (refunds fully if nil).
110
- def refund amount_in_cents = nil
111
- return false unless link? :refund
112
- refund = self.class.from_response(
113
- follow_link :refund, :params => { :amount_in_cents => amount_in_cents }
114
- )
115
- refund.uuid == uuid ? copy_from(refund) && self : refund
116
- end
117
-
118
- def signable_attributes
119
- super.merge :amount_in_cents => amount_in_cents, :currency => currency
120
- end
121
-
122
- # @return [String]
123
- def inspect
124
- attributes = self.class.attribute_names
125
- unless type == 'credit_card'
126
- attributes -= %w(cvv_result avs_result avs_result_street)
127
- end
128
- super attributes
129
- end
130
- end
131
- end
@@ -1,115 +0,0 @@
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
- # @return [String] The transaction error code.
43
- def transaction_error_code
44
- xml.text '/errors/transaction_error/error_code'
45
- end
46
-
47
- def gateway_error_code
48
- xml.text '/errors/transaction_error/gateway_error_code'
49
- end
50
-
51
- private
52
-
53
- def update_transaction transaction
54
- return unless transaction_xml = xml['/errors/transaction']
55
-
56
- @transaction = transaction
57
- transaction = Transaction.from_xml transaction_xml
58
- if @transaction.nil?
59
- @transaction = transaction
60
- else
61
- @transaction.instance_variable_get(:@attributes).update(
62
- transaction.attributes
63
- )
64
- end
65
- @transaction.persist!
66
- end
67
- end
68
-
69
- # Raised when a transaction fails for a temporary reason. The transaction
70
- # should be retried later.
71
- class RetryableError < Error
72
- end
73
-
74
- # Raised when a transaction fails due to a misconfiguration, e.g. if the
75
- # gateway hasn't been configured.
76
- class ConfigurationError < Error
77
- end
78
-
79
- # Raised when a transaction fails because the billing information was
80
- # invalid.
81
- class DeclinedError < Error
82
- end
83
-
84
- # Raised when the gateway believes this transaction to be a duplicate.
85
- class DuplicateError < DeclinedError
86
- end
87
-
88
- # Raised when a 3DS result token is needed to complete a transaction
89
- class ThreeDSecureError < DeclinedError
90
- def three_d_secure_action_token_id
91
- xml.text '/errors/transaction_error/three_d_secure_action_token_id'
92
- end
93
- end
94
-
95
- class << Error
96
- CATEGORY_MAP = Hash.new DeclinedError
97
- CATEGORY_MAP.update(
98
- 'communication' => RetryableError,
99
- 'configuration' => ConfigurationError,
100
- 'duplicate' => DuplicateError,
101
- '3d_secure_action_required' => ThreeDSecureError
102
- )
103
-
104
- def validate! exception, transaction
105
- return unless exception.is_a? API::UnprocessableEntity
106
-
107
- category = exception.send(:xml).text(
108
- '/errors/transaction_error/error_category'
109
- ) and raise CATEGORY_MAP[category].new(
110
- exception.request, exception.response, transaction
111
- )
112
- end
113
- end
114
- end
115
- end
@@ -1,28 +0,0 @@
1
- module Recurly
2
- class Usage < Resource
3
- # @return [MeasuredUnit]
4
- belongs_to :measured_unit
5
-
6
- define_attribute_methods %w(
7
- id
8
- usage_type
9
- unit_amount_in_cents
10
- usage_percentage
11
- amount
12
- merchant_tag
13
- usage_timestamp
14
- recording_timestamp
15
- billed_at
16
- created_at
17
- updated_at
18
- subscription_id
19
- add_on_code
20
- measured_unit_id
21
- modified_at
22
- )
23
-
24
- # Usages are only writeable and readable through {SubscriptionAddOns} instances.
25
- embedded!
26
- private_class_method :find
27
- end
28
- end
@@ -1,12 +0,0 @@
1
- module Recurly
2
- class Verify < Resource
3
- define_attribute_methods %w(
4
- gateway_code
5
- )
6
-
7
- def self.to_xml(attrs)
8
- verify = new attrs
9
- verify.to_xml
10
- end
11
- end
12
- end
@@ -1,111 +0,0 @@
1
- module Recurly
2
- # The Webhook class handles delegating the webhook request body to the appropriate
3
- # notification class. Notification classes enapsualte the supplied data, providing
4
- # access to account details, as well as subscription, invoice, and transaction
5
- # details where available.
6
- #
7
- # @example
8
- # Recurly::Webhook.parse(xml_body) # => #<Recurly::Webhook::NewAccountNotification ...>
9
- #
10
- # notification = Recurly::Webhook.parse(xml_body)
11
- # case notification
12
- # when Recurly::Webhook::NewAccountNoficiation
13
- # # A new account was created
14
- # ...
15
- # when Recurly::Webhook::NewSubscriptionNotification
16
- # # A new subscription was added
17
- # ...
18
- # when Recurly::Webhook::SubscriptionNotification
19
- # # A subscription-related notification was sent
20
- # ...
21
- # end
22
- module Webhook
23
- autoload :Notification, 'recurly/webhook/notification'
24
- autoload :AccountNotification, 'recurly/webhook/account_notification'
25
- autoload :SubscriptionNotification, 'recurly/webhook/subscription_notification'
26
- autoload :InvoiceNotification, 'recurly/webhook/invoice_notification'
27
- autoload :ItemNotification, 'recurly/webhook/item_notification'
28
- autoload :TransactionNotification, 'recurly/webhook/transaction_notification'
29
- autoload :DunningNotification, 'recurly/webhook/dunning_notification'
30
- autoload :CreditPaymentNotification, 'recurly/webhook/credit_payment_notification'
31
- autoload :BillingInfoUpdatedNotification, 'recurly/webhook/billing_info_updated_notification'
32
- autoload :BillingInfoUpdateFailedNotification, 'recurly/webhook/billing_info_update_failed_notification'
33
- autoload :SubscriptionPausedNotification, 'recurly/webhook/subscription_paused_notification'
34
- autoload :SubscriptionPauseCanceledNotification,'recurly/webhook/subscription_pause_canceled_notification'
35
- autoload :SubscriptionPauseModifiedNotification,'recurly/webhook/subscription_pause_modified_notification'
36
- autoload :PausedSubscriptionRenewalNotification,'recurly/webhook/paused_subscription_renewal_notification'
37
- autoload :SubscriptionResumedNotification, 'recurly/webhook/subscription_resumed_notification'
38
- autoload :CanceledSubscriptionNotification, 'recurly/webhook/canceled_subscription_notification'
39
- autoload :ScheduledSubscriptionPauseNotification,'recurly/webhook/scheduled_subscription_pause_notification'
40
- autoload :CanceledAccountNotification, 'recurly/webhook/canceled_account_notification'
41
- autoload :ClosedInvoiceNotification, 'recurly/webhook/closed_invoice_notification'
42
- autoload :ClosedCreditInvoiceNotification, 'recurly/webhook/closed_credit_invoice_notification'
43
- autoload :NewCreditInvoiceNotification, 'recurly/webhook/new_credit_invoice_notification'
44
- autoload :ProcessingCreditInvoiceNotification, 'recurly/webhook/processing_credit_invoice_notification'
45
- autoload :ReopenedCreditInvoiceNotification, 'recurly/webhook/reopened_credit_invoice_notification'
46
- autoload :VoidedCreditInvoiceNotification, 'recurly/webhook/voided_credit_invoice_notification'
47
- autoload :NewCreditPaymentNotification, 'recurly/webhook/new_credit_payment_notification'
48
- autoload :VoidedCreditPaymentNotification, 'recurly/webhook/voided_credit_payment_notification'
49
- autoload :ExpiredSubscriptionNotification, 'recurly/webhook/expired_subscription_notification'
50
- autoload :FailedPaymentNotification, 'recurly/webhook/failed_payment_notification'
51
- autoload :NewAccountNotification, 'recurly/webhook/new_account_notification'
52
- autoload :UpdatedAccountNotification, 'recurly/webhook/updated_account_notification'
53
- autoload :NewInvoiceNotification, 'recurly/webhook/new_invoice_notification'
54
- autoload :NewChargeInvoiceNotification, 'recurly/webhook/new_charge_invoice_notification'
55
- autoload :ProcessingChargeInvoiceNotification, 'recurly/webhook/processing_charge_invoice_notification'
56
- autoload :PastDueChargeInvoiceNotification, 'recurly/webhook/past_due_charge_invoice_notification'
57
- autoload :PaidChargeInvoiceNotification, 'recurly/webhook/paid_charge_invoice_notification'
58
- autoload :FailedChargeInvoiceNotification, 'recurly/webhook/failed_charge_invoice_notification'
59
- autoload :ReopenedChargeInvoiceNotification, 'recurly/webhook/reopened_charge_invoice_notification'
60
- autoload :NewSubscriptionNotification, 'recurly/webhook/new_subscription_notification'
61
- autoload :PastDueInvoiceNotification, 'recurly/webhook/past_due_invoice_notification'
62
- autoload :ReactivatedAccountNotification, 'recurly/webhook/reactivated_account_notification'
63
- autoload :RenewedSubscriptionNotification, 'recurly/webhook/renewed_subscription_notification'
64
- autoload :SuccessfulPaymentNotification, 'recurly/webhook/successful_payment_notification'
65
- autoload :SuccessfulRefundNotification, 'recurly/webhook/successful_refund_notification'
66
- autoload :UpdatedSubscriptionNotification, 'recurly/webhook/updated_subscription_notification'
67
- autoload :VoidPaymentNotification, 'recurly/webhook/void_payment_notification'
68
- autoload :ProcessingPaymentNotification, 'recurly/webhook/processing_payment_notification'
69
- autoload :ProcessingInvoiceNotification, 'recurly/webhook/processing_invoice_notification'
70
- autoload :ScheduledPaymentNotification, 'recurly/webhook/scheduled_payment_notification'
71
- autoload :NewDunningEventNotification, 'recurly/webhook/new_dunning_event_notification'
72
- autoload :GiftCardNotification, 'recurly/webhook/gift_card_notification'
73
- autoload :PurchasedGiftCardNotification, 'recurly/webhook/purchased_gift_card_notification'
74
- autoload :UpdatedGiftCardNotification, 'recurly/webhook/updated_gift_card_notification'
75
- autoload :RegeneratedGiftCardNotification, 'recurly/webhook/regenerated_gift_card_notification'
76
- autoload :CanceledGiftCardNotification, 'recurly/webhook/canceled_gift_card_notification'
77
- autoload :RedeemedGiftCardNotification, 'recurly/webhook/redeemed_gift_card_notification'
78
- autoload :UpdatedBalanceGiftCardNotification, 'recurly/webhook/updated_balance_gift_card_notification'
79
- autoload :NewUsageNotification, 'recurly/webhook/new_usage_notification'
80
- autoload :TransactionAuthorizedNotification, 'recurly/webhook/transaction_authorized_notification'
81
- autoload :LowBalanceGiftCardNotification, 'recurly/webhook/low_balance_gift_card_notification'
82
- autoload :TransactionStatusUpdatedNotification, 'recurly/webhook/transaction_status_updated_notification'
83
- autoload :UpdatedInvoiceNotification, 'recurly/webhook/updated_invoice_notification'
84
- autoload :NewShippingAddressNotification, 'recurly/webhook/new_shipping_address_notification'
85
- autoload :UpdatedShippingAddressNotification, 'recurly/webhook/updated_shipping_address_notification'
86
- autoload :DeletedShippingAddressNotification, 'recurly/webhook/deleted_shipping_address_notification'
87
- autoload :FraudInfoUpdatedNotification, 'recurly/webhook/fraud_info_updated_notification'
88
- autoload :NewItemNotification, 'recurly/webhook/new_item_notification'
89
- autoload :UpdatedItemNotification, 'recurly/webhook/updated_item_notification'
90
- autoload :DeactivatedItemNotification, 'recurly/webhook/deactivated_item_notification'
91
- autoload :ReactivatedItemNotification, 'recurly/webhook/reactivated_item_notification'
92
-
93
- # This exception is raised if the Webhook Notification initialization fails
94
- class NotificationError < Error
95
- end
96
-
97
- # @return [Resource] A notification.
98
- # @raise [NotificationError] For unknown or invalid notifications.
99
- def self.parse xml_body
100
- xml = XML.new xml_body
101
- class_name = Helper.classify xml.name
102
-
103
- if Webhook.const_defined?(class_name, false)
104
- klass = Webhook.const_get class_name
105
- klass.from_xml xml_body
106
- else
107
- raise NotificationError, "'#{class_name}' is not a recognized notification"
108
- end
109
- end
110
- end
111
- end