recurly 2.20.3 → 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 (234) 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 -1114
  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 -167
  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 -196
  93. data/lib/recurly/account.rb +0 -230
  94. data/lib/recurly/account_acquisition.rb +0 -27
  95. data/lib/recurly/account_balance.rb +0 -23
  96. data/lib/recurly/add_on.rb +0 -52
  97. data/lib/recurly/address.rb +0 -25
  98. data/lib/recurly/adjustment.rb +0 -100
  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 -134
  103. data/lib/recurly/business_entity.rb +0 -35
  104. data/lib/recurly/coupon.rb +0 -136
  105. data/lib/recurly/credit_payment.rb +0 -32
  106. data/lib/recurly/currency_percentage_tier.rb +0 -17
  107. data/lib/recurly/custom_field.rb +0 -15
  108. data/lib/recurly/custom_field_definition.rb +0 -14
  109. data/lib/recurly/customer_permission.rb +0 -10
  110. data/lib/recurly/delivery.rb +0 -19
  111. data/lib/recurly/dunning_campaign.rb +0 -30
  112. data/lib/recurly/dunning_cycle.rb +0 -18
  113. data/lib/recurly/entitlement.rb +0 -19
  114. data/lib/recurly/error.rb +0 -13
  115. data/lib/recurly/external_account.rb +0 -17
  116. data/lib/recurly/external_charge.rb +0 -20
  117. data/lib/recurly/external_invoice.rb +0 -27
  118. data/lib/recurly/external_payment_phase.rb +0 -27
  119. data/lib/recurly/external_product.rb +0 -34
  120. data/lib/recurly/external_product_reference.rb +0 -18
  121. data/lib/recurly/external_subscription.rb +0 -62
  122. data/lib/recurly/gateway_attribute.rb +0 -10
  123. data/lib/recurly/general_ledger_account.rb +0 -16
  124. data/lib/recurly/gift_card.rb +0 -85
  125. data/lib/recurly/helper.rb +0 -51
  126. data/lib/recurly/invoice.rb +0 -354
  127. data/lib/recurly/invoice_collection.rb +0 -14
  128. data/lib/recurly/invoice_template.rb +0 -14
  129. data/lib/recurly/item.rb +0 -36
  130. data/lib/recurly/js.rb +0 -14
  131. data/lib/recurly/juris_detail.rb +0 -15
  132. data/lib/recurly/measured_unit.rb +0 -16
  133. data/lib/recurly/money.rb +0 -120
  134. data/lib/recurly/note.rb +0 -14
  135. data/lib/recurly/percentage_tier.rb +0 -17
  136. data/lib/recurly/performance_obligation.rb +0 -15
  137. data/lib/recurly/plan.rb +0 -59
  138. data/lib/recurly/plan_ramp_interval.rb +0 -10
  139. data/lib/recurly/purchase.rb +0 -239
  140. data/lib/recurly/redemption.rb +0 -46
  141. data/lib/recurly/resource/association.rb +0 -16
  142. data/lib/recurly/resource/errors.rb +0 -20
  143. data/lib/recurly/resource/pager.rb +0 -313
  144. data/lib/recurly/rev_rec.rb +0 -18
  145. data/lib/recurly/shipping_address.rb +0 -26
  146. data/lib/recurly/shipping_fee.rb +0 -17
  147. data/lib/recurly/shipping_method.rb +0 -13
  148. data/lib/recurly/sub_add_on_percentage_tier.rb +0 -17
  149. data/lib/recurly/subscription/add_ons.rb +0 -82
  150. data/lib/recurly/subscription.rb +0 -374
  151. data/lib/recurly/subscription_add_on.rb +0 -64
  152. data/lib/recurly/subscription_ramp_interval.rb +0 -12
  153. data/lib/recurly/tax_detail.rb +0 -18
  154. data/lib/recurly/tax_type.rb +0 -13
  155. data/lib/recurly/tier.rb +0 -18
  156. data/lib/recurly/transaction/errors.rb +0 -119
  157. data/lib/recurly/transaction.rb +0 -132
  158. data/lib/recurly/usage.rb +0 -29
  159. data/lib/recurly/verify.rb +0 -12
  160. data/lib/recurly/webhook/account_notification.rb +0 -13
  161. data/lib/recurly/webhook/billing_info_update_failed_notification.rb +0 -6
  162. data/lib/recurly/webhook/billing_info_updated_notification.rb +0 -6
  163. data/lib/recurly/webhook/canceled_account_notification.rb +0 -6
  164. data/lib/recurly/webhook/canceled_gift_card_notification.rb +0 -6
  165. data/lib/recurly/webhook/canceled_subscription_notification.rb +0 -6
  166. data/lib/recurly/webhook/closed_credit_invoice_notification.rb +0 -6
  167. data/lib/recurly/webhook/closed_invoice_notification.rb +0 -6
  168. data/lib/recurly/webhook/credit_payment_notification.rb +0 -12
  169. data/lib/recurly/webhook/deactivated_item_notification.rb +0 -6
  170. data/lib/recurly/webhook/deleted_shipping_address_notification.rb +0 -6
  171. data/lib/recurly/webhook/dunning_notification.rb +0 -14
  172. data/lib/recurly/webhook/expired_subscription_notification.rb +0 -6
  173. data/lib/recurly/webhook/failed_charge_invoice_notification.rb +0 -6
  174. data/lib/recurly/webhook/failed_payment_notification.rb +0 -6
  175. data/lib/recurly/webhook/fraud_info_updated_notification.rb +0 -6
  176. data/lib/recurly/webhook/gift_card_notification.rb +0 -8
  177. data/lib/recurly/webhook/invoice_notification.rb +0 -12
  178. data/lib/recurly/webhook/item_notification.rb +0 -7
  179. data/lib/recurly/webhook/low_balance_gift_card_notification.rb +0 -6
  180. data/lib/recurly/webhook/new_account_notification.rb +0 -6
  181. data/lib/recurly/webhook/new_charge_invoice_notification.rb +0 -6
  182. data/lib/recurly/webhook/new_credit_invoice_notification.rb +0 -6
  183. data/lib/recurly/webhook/new_credit_payment_notification.rb +0 -6
  184. data/lib/recurly/webhook/new_dunning_event_notification.rb +0 -6
  185. data/lib/recurly/webhook/new_invoice_notification.rb +0 -6
  186. data/lib/recurly/webhook/new_item_notification.rb +0 -6
  187. data/lib/recurly/webhook/new_shipping_address_notification.rb +0 -6
  188. data/lib/recurly/webhook/new_subscription_notification.rb +0 -6
  189. data/lib/recurly/webhook/new_usage_notification.rb +0 -8
  190. data/lib/recurly/webhook/notification.rb +0 -18
  191. data/lib/recurly/webhook/paid_charge_invoice_notification.rb +0 -6
  192. data/lib/recurly/webhook/past_due_charge_invoice_notification.rb +0 -6
  193. data/lib/recurly/webhook/past_due_invoice_notification.rb +0 -6
  194. data/lib/recurly/webhook/paused_subscription_renewal_notification.rb +0 -6
  195. data/lib/recurly/webhook/prerenewal_notification.rb +0 -6
  196. data/lib/recurly/webhook/processing_charge_invoice_notification.rb +0 -6
  197. data/lib/recurly/webhook/processing_credit_invoice_notification.rb +0 -6
  198. data/lib/recurly/webhook/processing_invoice_notification.rb +0 -6
  199. data/lib/recurly/webhook/processing_payment_notification.rb +0 -6
  200. data/lib/recurly/webhook/purchased_gift_card_notification.rb +0 -7
  201. data/lib/recurly/webhook/reactivated_account_notification.rb +0 -6
  202. data/lib/recurly/webhook/reactivated_item_notification.rb +0 -6
  203. data/lib/recurly/webhook/redeemed_gift_card_notification.rb +0 -7
  204. data/lib/recurly/webhook/regenerated_gift_card_notification.rb +0 -6
  205. data/lib/recurly/webhook/renewed_subscription_notification.rb +0 -6
  206. data/lib/recurly/webhook/reopened_charge_invoice_notification.rb +0 -6
  207. data/lib/recurly/webhook/reopened_credit_invoice_notification.rb +0 -6
  208. data/lib/recurly/webhook/scheduled_payment_notification.rb +0 -6
  209. data/lib/recurly/webhook/scheduled_subscription_pause_notification.rb +0 -6
  210. data/lib/recurly/webhook/scheduled_subscription_update_notification.rb +0 -6
  211. data/lib/recurly/webhook/subscription_notification.rb +0 -12
  212. data/lib/recurly/webhook/subscription_pause_canceled_notification.rb +0 -6
  213. data/lib/recurly/webhook/subscription_pause_modified_notification.rb +0 -6
  214. data/lib/recurly/webhook/subscription_paused_notification.rb +0 -6
  215. data/lib/recurly/webhook/subscription_resumed_notification.rb +0 -6
  216. data/lib/recurly/webhook/successful_payment_notification.rb +0 -6
  217. data/lib/recurly/webhook/successful_refund_notification.rb +0 -6
  218. data/lib/recurly/webhook/transaction_authorized_notification.rb +0 -6
  219. data/lib/recurly/webhook/transaction_notification.rb +0 -12
  220. data/lib/recurly/webhook/transaction_status_updated_notification.rb +0 -6
  221. data/lib/recurly/webhook/updated_account_notification.rb +0 -6
  222. data/lib/recurly/webhook/updated_balance_gift_card_notification.rb +0 -7
  223. data/lib/recurly/webhook/updated_gift_card_notification.rb +0 -6
  224. data/lib/recurly/webhook/updated_invoice_notification.rb +0 -6
  225. data/lib/recurly/webhook/updated_item_notification.rb +0 -6
  226. data/lib/recurly/webhook/updated_shipping_address_notification.rb +0 -6
  227. data/lib/recurly/webhook/updated_subscription_notification.rb +0 -6
  228. data/lib/recurly/webhook/void_payment_notification.rb +0 -6
  229. data/lib/recurly/webhook/voided_credit_invoice_notification.rb +0 -6
  230. data/lib/recurly/webhook/voided_credit_payment_notification.rb +0 -6
  231. data/lib/recurly/webhook.rb +0 -113
  232. data/lib/recurly/xml/nokogiri.rb +0 -60
  233. data/lib/recurly/xml/rexml.rb +0 -52
  234. data/lib/recurly/xml.rb +0 -122
@@ -1,6 +0,0 @@
1
- module Recurly
2
- module Webhook
3
- class SubscriptionResumedNotification < SubscriptionNotification
4
- end
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module Recurly
2
- module Webhook
3
- class SuccessfulPaymentNotification < TransactionNotification
4
- end
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module Recurly
2
- module Webhook
3
- class SuccessfulRefundNotification < TransactionNotification
4
- end
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module Recurly
2
- module Webhook
3
- class TransactionAuthorizedNotification < TransactionNotification
4
- end
5
- end
6
- end
@@ -1,12 +0,0 @@
1
- module Recurly
2
- module Webhook
3
- # The TransactionNotification class provides a generic interface
4
- # for account-related webhook notifications.
5
- class TransactionNotification < Notification
6
- # @return [Account]
7
- has_one :account
8
- # @return [Transaction]
9
- has_one :transaction
10
- end
11
- end
12
- end
@@ -1,6 +0,0 @@
1
- module Recurly
2
- module Webhook
3
- class TransactionStatusUpdatedNotification < TransactionNotification
4
- end
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module Recurly
2
- module Webhook
3
- class UpdatedAccountNotification < AccountNotification
4
- end
5
- end
6
- end
@@ -1,7 +0,0 @@
1
- module Recurly
2
- module Webhook
3
- class UpdatedBalanceGiftCardNotification < GiftCardNotification
4
-
5
- end
6
- end
7
- end
@@ -1,6 +0,0 @@
1
- module Recurly
2
- module Webhook
3
- class UpdatedGiftCardNotification < GiftCardNotification
4
- end
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module Recurly
2
- module Webhook
3
- class UpdatedInvoiceNotification < InvoiceNotification
4
- end
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module Recurly
2
- module Webhook
3
- class UpdatedItemNotification < ItemNotification
4
- end
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module Recurly
2
- module Webhook
3
- class UpdatedShippingAddressNotification < AccountNotification
4
- end
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module Recurly
2
- module Webhook
3
- class UpdatedSubscriptionNotification < SubscriptionNotification
4
- end
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module Recurly
2
- module Webhook
3
- class VoidPaymentNotification < TransactionNotification
4
- end
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module Recurly
2
- module Webhook
3
- class VoidedCreditInvoiceNotification < InvoiceNotification
4
- end
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module Recurly
2
- module Webhook
3
- class VoidedCreditPaymentNotification < CreditPaymentNotification
4
- end
5
- end
6
- end
@@ -1,113 +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 :ScheduledSubscriptionUpdateNotification, 'recurly/webhook/scheduled_subscription_update_notification'
41
- autoload :CanceledAccountNotification, 'recurly/webhook/canceled_account_notification'
42
- autoload :ClosedInvoiceNotification, 'recurly/webhook/closed_invoice_notification'
43
- autoload :ClosedCreditInvoiceNotification, 'recurly/webhook/closed_credit_invoice_notification'
44
- autoload :NewCreditInvoiceNotification, 'recurly/webhook/new_credit_invoice_notification'
45
- autoload :ProcessingCreditInvoiceNotification, 'recurly/webhook/processing_credit_invoice_notification'
46
- autoload :ReopenedCreditInvoiceNotification, 'recurly/webhook/reopened_credit_invoice_notification'
47
- autoload :VoidedCreditInvoiceNotification, 'recurly/webhook/voided_credit_invoice_notification'
48
- autoload :NewCreditPaymentNotification, 'recurly/webhook/new_credit_payment_notification'
49
- autoload :VoidedCreditPaymentNotification, 'recurly/webhook/voided_credit_payment_notification'
50
- autoload :ExpiredSubscriptionNotification, 'recurly/webhook/expired_subscription_notification'
51
- autoload :FailedPaymentNotification, 'recurly/webhook/failed_payment_notification'
52
- autoload :NewAccountNotification, 'recurly/webhook/new_account_notification'
53
- autoload :UpdatedAccountNotification, 'recurly/webhook/updated_account_notification'
54
- autoload :NewInvoiceNotification, 'recurly/webhook/new_invoice_notification'
55
- autoload :NewChargeInvoiceNotification, 'recurly/webhook/new_charge_invoice_notification'
56
- autoload :ProcessingChargeInvoiceNotification, 'recurly/webhook/processing_charge_invoice_notification'
57
- autoload :PastDueChargeInvoiceNotification, 'recurly/webhook/past_due_charge_invoice_notification'
58
- autoload :PaidChargeInvoiceNotification, 'recurly/webhook/paid_charge_invoice_notification'
59
- autoload :FailedChargeInvoiceNotification, 'recurly/webhook/failed_charge_invoice_notification'
60
- autoload :ReopenedChargeInvoiceNotification, 'recurly/webhook/reopened_charge_invoice_notification'
61
- autoload :NewSubscriptionNotification, 'recurly/webhook/new_subscription_notification'
62
- autoload :PastDueInvoiceNotification, 'recurly/webhook/past_due_invoice_notification'
63
- autoload :ReactivatedAccountNotification, 'recurly/webhook/reactivated_account_notification'
64
- autoload :RenewedSubscriptionNotification, 'recurly/webhook/renewed_subscription_notification'
65
- autoload :SuccessfulPaymentNotification, 'recurly/webhook/successful_payment_notification'
66
- autoload :SuccessfulRefundNotification, 'recurly/webhook/successful_refund_notification'
67
- autoload :UpdatedSubscriptionNotification, 'recurly/webhook/updated_subscription_notification'
68
- autoload :VoidPaymentNotification, 'recurly/webhook/void_payment_notification'
69
- autoload :ProcessingPaymentNotification, 'recurly/webhook/processing_payment_notification'
70
- autoload :ProcessingInvoiceNotification, 'recurly/webhook/processing_invoice_notification'
71
- autoload :ScheduledPaymentNotification, 'recurly/webhook/scheduled_payment_notification'
72
- autoload :NewDunningEventNotification, 'recurly/webhook/new_dunning_event_notification'
73
- autoload :GiftCardNotification, 'recurly/webhook/gift_card_notification'
74
- autoload :PurchasedGiftCardNotification, 'recurly/webhook/purchased_gift_card_notification'
75
- autoload :UpdatedGiftCardNotification, 'recurly/webhook/updated_gift_card_notification'
76
- autoload :RegeneratedGiftCardNotification, 'recurly/webhook/regenerated_gift_card_notification'
77
- autoload :CanceledGiftCardNotification, 'recurly/webhook/canceled_gift_card_notification'
78
- autoload :RedeemedGiftCardNotification, 'recurly/webhook/redeemed_gift_card_notification'
79
- autoload :UpdatedBalanceGiftCardNotification, 'recurly/webhook/updated_balance_gift_card_notification'
80
- autoload :NewUsageNotification, 'recurly/webhook/new_usage_notification'
81
- autoload :TransactionAuthorizedNotification, 'recurly/webhook/transaction_authorized_notification'
82
- autoload :LowBalanceGiftCardNotification, 'recurly/webhook/low_balance_gift_card_notification'
83
- autoload :TransactionStatusUpdatedNotification, 'recurly/webhook/transaction_status_updated_notification'
84
- autoload :UpdatedInvoiceNotification, 'recurly/webhook/updated_invoice_notification'
85
- autoload :NewShippingAddressNotification, 'recurly/webhook/new_shipping_address_notification'
86
- autoload :UpdatedShippingAddressNotification, 'recurly/webhook/updated_shipping_address_notification'
87
- autoload :DeletedShippingAddressNotification, 'recurly/webhook/deleted_shipping_address_notification'
88
- autoload :FraudInfoUpdatedNotification, 'recurly/webhook/fraud_info_updated_notification'
89
- autoload :NewItemNotification, 'recurly/webhook/new_item_notification'
90
- autoload :UpdatedItemNotification, 'recurly/webhook/updated_item_notification'
91
- autoload :DeactivatedItemNotification, 'recurly/webhook/deactivated_item_notification'
92
- autoload :ReactivatedItemNotification, 'recurly/webhook/reactivated_item_notification'
93
- autoload :PrerenewalNotification, 'recurly/webhook/prerenewal_notification'
94
-
95
- # This exception is raised if the Webhook Notification initialization fails
96
- class NotificationError < Error
97
- end
98
-
99
- # @return [Resource] A notification.
100
- # @raise [NotificationError] For unknown or invalid notifications.
101
- def self.parse xml_body
102
- xml = XML.new xml_body
103
- class_name = Helper.classify xml.name
104
-
105
- if Webhook.const_defined?(class_name, false)
106
- klass = Webhook.const_get class_name
107
- klass.from_xml xml_body
108
- else
109
- raise NotificationError, "'#{class_name}' is not a recognized notification"
110
- end
111
- end
112
- end
113
- end
@@ -1,60 +0,0 @@
1
- module Recurly
2
- class XML
3
- module NokogiriAdapter
4
- def initialize xml
5
- @root = Nokogiri::XML(xml) { |config| config.strict }.root
6
- rescue Nokogiri::XML::SyntaxError
7
- raise ParseError
8
- end
9
-
10
- def add_element name, value = nil
11
- root.add_child(node = ::Nokogiri::XML::Element.new(name, root.document))
12
- node << value if value
13
- node
14
- end
15
-
16
- def each_element xpath = nil
17
- elements = xpath.nil? ? root.children : root.xpath(xpath)
18
- elements.each { |el| yield el }
19
- end
20
-
21
- def each element = root
22
- element.elements.each do |el|
23
- yield el
24
- each el, &Proc.new
25
- end
26
- end
27
-
28
- def name
29
- root.name
30
- end
31
-
32
- def [] xpath
33
- root.at_xpath xpath
34
- end
35
-
36
- def text xpath = nil
37
- if node = (xpath ? root.at_xpath(xpath) : root)
38
- if node.text?
39
- node.text
40
- else
41
- node.children.map { |e| e.text if e.text? }.compact.join
42
- end
43
- end
44
- end
45
-
46
- def text= text
47
- root.content = text
48
- end
49
-
50
- def to_s
51
- root.to_xml(
52
- indent: 0,
53
- save_with: Nokogiri::XML::Node::SaveOptions::NO_EMPTY_TAGS
54
- ).gsub(/$\n/, '')
55
- end
56
- end
57
-
58
- include NokogiriAdapter
59
- end
60
- end
@@ -1,52 +0,0 @@
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
- rescue REXML::ParseException
9
- raise ParseError
10
- end
11
-
12
- def add_element name, value = nil
13
- node = root.add_element name
14
- node.text = value if value
15
- node
16
- end
17
-
18
- def each_element xpath = nil
19
- root.each_element(xpath) { |el| yield el }
20
- end
21
-
22
- def each element = root
23
- element.each_element do |el|
24
- yield el
25
- each el, &Proc.new { |e| yield e }
26
- end
27
- end
28
-
29
- def name
30
- root.name
31
- end
32
-
33
- def [] xpath
34
- root.get_elements(xpath).first
35
- end
36
-
37
- def text xpath = nil
38
- text = root.get_text(xpath) and text.to_s
39
- end
40
-
41
- def text= text
42
- root.text = text
43
- end
44
-
45
- def to_s
46
- root.to_s
47
- end
48
- end
49
-
50
- include REXMLAdapter
51
- end
52
- end
data/lib/recurly/xml.rb DELETED
@@ -1,122 +0,0 @@
1
- module Recurly
2
- class XML
3
- ParseError = Class.new(StandardError)
4
-
5
- class << self
6
- def cast(el)
7
- # return nil if the `nil` attribute is present
8
- return if el.attribute 'nil'
9
-
10
- # get the type from the xml attribute but default to nil
11
- type = if el.attribute('type')
12
- el.attribute('type').value
13
- end
14
-
15
- # try to parse it as a known simple type
16
- case type
17
- when 'array' then el.elements.map { |e| cast(e) }
18
- when 'boolean' then el.text == 'true'
19
- when 'date' then Date.parse(el.text)
20
- when 'datetime' then DateTime.parse(el.text)
21
- when 'float' then el.text.to_f
22
- when 'integer' then el.text.to_i
23
- else
24
- # try to find a Resource class responsible for this element
25
- [el.name, type].each do |name|
26
- next unless name
27
- if resource = Recurly::Resource.find_resource_class(name)
28
- return resource.from_xml(el)
29
- end
30
- end
31
-
32
- # fallback to parsing it as a String or a Hash
33
- if el.elements.empty?
34
- el.text
35
- else
36
- Hash[el.elements.map { |e| [e.name, cast(e)] }]
37
- end
38
- end
39
- end
40
-
41
- def filter(text)
42
- xml = XML.new text
43
- xml.each do |el|
44
- el = XML.new el
45
- case el.name
46
- when "number"
47
- text = el.text.to_s
48
- last = text[-4, 4]
49
- el.text = "#{text[0, text.length - 4].to_s.gsub(/\d/, '*')}#{last}"
50
- when "verification_value"
51
- el.text = el.text.to_s.gsub(/\d/, '*')
52
- end
53
- end
54
- xml.to_s
55
- end
56
- end
57
-
58
- attr_reader :root
59
-
60
- def initialize xml
61
- @root = xml.is_a?(String) ? super : xml
62
- end
63
-
64
- # Adds an element to the root.
65
- def add_element name, value = nil
66
- value = value.respond_to?(:xmlschema) ? value.xmlschema : value.to_s
67
- XML.new super(name, value)
68
- end
69
-
70
- # Iterates over the root's elements.
71
- def each_element xpath = nil
72
- return enum_for :each_element unless block_given?
73
- super
74
- end
75
-
76
- # Returns the root's name.
77
- def name
78
- super
79
- end
80
-
81
- # Returns an XML string.
82
- def to_s
83
- super
84
- end
85
- end
86
- end
87
-
88
- if defined? Nokogiri
89
- insecure_noko_msg = <<-MSG
90
-
91
- You are attempting to use an insecure version of
92
- nokogiri on an insecure version of ruby. Please see
93
- the documentation on supported versions for more information:
94
- https://github.com/recurly/recurly-client-ruby#supported-ruby-versions
95
-
96
- MSG
97
- if RUBY_VERSION < "2.1.0"
98
- raise insecure_noko_msg
99
- else
100
- require 'recurly/xml/nokogiri'
101
- version = Gem::Version.new(Nokogiri::VERSION)
102
-
103
- if version.segments.length == 3
104
- major, minor, patch = version.segments
105
- else
106
- major, minor, patch, _pre = version.segments
107
- end
108
-
109
- # Only warning users for now
110
- if minor < 6
111
- puts insecure_noko_msg
112
- elsif minor == 6 && patch < 8
113
- puts insecure_noko_msg
114
- elsif minor == 7 && patch < 2
115
- puts insecure_noko_msg
116
- elsif minor == 8 && patch < 2
117
- puts insecure_noko_msg
118
- end
119
- end
120
- else
121
- require 'recurly/xml/rexml'
122
- end