recurly 2.17.0 → 3.14.0

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 (260) hide show
  1. checksums.yaml +4 -4
  2. data/.bumpversion.cfg +15 -0
  3. data/.github/ISSUE_TEMPLATE/bug-report.md +30 -0
  4. data/.github/ISSUE_TEMPLATE/question-or-other.md +10 -0
  5. data/.github/workflows/docs.yml +28 -0
  6. data/.github_changelog_generator +8 -0
  7. data/.gitignore +15 -0
  8. data/.rspec +2 -0
  9. data/.travis.yml +13 -0
  10. data/.yardopts +2 -0
  11. data/CHANGELOG.md +313 -0
  12. data/CODE_OF_CONDUCT.md +130 -0
  13. data/CONTRIBUTING.md +106 -0
  14. data/GETTING_STARTED.md +319 -0
  15. data/Gemfile +4 -0
  16. data/LICENSE.txt +21 -0
  17. data/README.md +9 -153
  18. data/Rakefile +6 -0
  19. data/benchmark.rb +16 -0
  20. data/lib/data/ca-certificates.crt +3466 -0
  21. data/lib/recurly/client/operations.rb +3665 -0
  22. data/lib/recurly/client.rb +353 -0
  23. data/lib/recurly/connection_pool.rb +40 -0
  24. data/lib/recurly/errors/api_errors.rb +83 -0
  25. data/lib/recurly/errors/network_errors.rb +10 -0
  26. data/lib/recurly/errors.rb +68 -0
  27. data/lib/recurly/http.rb +50 -0
  28. data/lib/recurly/pager.rb +146 -0
  29. data/lib/recurly/request.rb +31 -0
  30. data/lib/recurly/requests/account_acquisition_cost.rb +18 -0
  31. data/lib/recurly/requests/account_acquisition_updatable.rb +26 -0
  32. data/lib/recurly/requests/account_create.rb +90 -0
  33. data/lib/recurly/requests/account_purchase.rb +90 -0
  34. data/lib/recurly/requests/account_update.rb +78 -0
  35. data/lib/recurly/requests/add_on_create.rb +94 -0
  36. data/lib/recurly/requests/add_on_pricing.rb +18 -0
  37. data/lib/recurly/requests/add_on_update.rb +74 -0
  38. data/lib/recurly/requests/address.rb +46 -0
  39. data/lib/recurly/requests/billing_info_create.rb +110 -0
  40. data/lib/recurly/requests/coupon_bulk_create.rb +14 -0
  41. data/lib/recurly/requests/coupon_create.rb +94 -0
  42. data/lib/recurly/requests/coupon_pricing.rb +18 -0
  43. data/lib/recurly/requests/coupon_redemption_create.rb +18 -0
  44. data/lib/recurly/requests/coupon_update.rb +34 -0
  45. data/lib/recurly/requests/custom_field.rb +18 -0
  46. data/lib/recurly/requests/external_refund.rb +22 -0
  47. data/lib/recurly/requests/external_transaction.rb +26 -0
  48. data/lib/recurly/requests/invoice_address.rb +54 -0
  49. data/lib/recurly/requests/invoice_collect.rb +18 -0
  50. data/lib/recurly/requests/invoice_create.rb +42 -0
  51. data/lib/recurly/requests/invoice_refund.rb +34 -0
  52. data/lib/recurly/requests/invoice_updatable.rb +34 -0
  53. data/lib/recurly/requests/item_create.rb +58 -0
  54. data/lib/recurly/requests/item_update.rb +58 -0
  55. data/lib/recurly/requests/line_item_create.rb +82 -0
  56. data/lib/recurly/requests/line_item_refund.rb +22 -0
  57. data/lib/recurly/requests/measured_unit_create.rb +22 -0
  58. data/lib/recurly/requests/measured_unit_update.rb +22 -0
  59. data/lib/recurly/requests/plan_create.rb +98 -0
  60. data/lib/recurly/requests/plan_hosted_pages.rb +26 -0
  61. data/lib/recurly/requests/plan_pricing.rb +22 -0
  62. data/lib/recurly/requests/plan_update.rb +94 -0
  63. data/lib/recurly/requests/pricing.rb +18 -0
  64. data/lib/recurly/requests/purchase_create.rb +74 -0
  65. data/lib/recurly/requests/shipping_address_create.rb +62 -0
  66. data/lib/recurly/requests/shipping_address_update.rb +66 -0
  67. data/lib/recurly/requests/shipping_fee_create.rb +22 -0
  68. data/lib/recurly/requests/shipping_method_create.rb +26 -0
  69. data/lib/recurly/requests/shipping_method_update.rb +26 -0
  70. data/lib/recurly/requests/shipping_purchase.rb +22 -0
  71. data/lib/recurly/requests/subscription_add_on_create.rb +38 -0
  72. data/lib/recurly/requests/subscription_add_on_tier.rb +18 -0
  73. data/lib/recurly/requests/subscription_add_on_update.rb +42 -0
  74. data/lib/recurly/requests/subscription_cancel.rb +14 -0
  75. data/lib/recurly/requests/subscription_change_create.rb +66 -0
  76. data/lib/recurly/requests/subscription_change_shipping_create.rb +22 -0
  77. data/lib/recurly/requests/subscription_create.rb +106 -0
  78. data/lib/recurly/requests/subscription_pause.rb +14 -0
  79. data/lib/recurly/requests/subscription_purchase.rb +66 -0
  80. data/lib/recurly/requests/subscription_shipping_create.rb +30 -0
  81. data/lib/recurly/requests/subscription_shipping_purchase.rb +22 -0
  82. data/lib/recurly/requests/subscription_shipping_update.rb +22 -0
  83. data/lib/recurly/requests/subscription_update.rb +58 -0
  84. data/lib/recurly/requests/tier.rb +18 -0
  85. data/lib/recurly/requests/usage_create.rb +26 -0
  86. data/lib/recurly/requests.rb +8 -0
  87. data/lib/recurly/resource.rb +23 -1082
  88. data/lib/recurly/resources/account.rb +130 -0
  89. data/lib/recurly/resources/account_acquisition.rb +46 -0
  90. data/lib/recurly/resources/account_acquisition_cost.rb +18 -0
  91. data/lib/recurly/resources/account_balance.rb +26 -0
  92. data/lib/recurly/resources/account_balance_amount.rb +18 -0
  93. data/lib/recurly/resources/account_mini.rb +46 -0
  94. data/lib/recurly/resources/account_note.rb +34 -0
  95. data/lib/recurly/resources/add_on.rb +114 -0
  96. data/lib/recurly/resources/add_on_mini.rb +54 -0
  97. data/lib/recurly/resources/add_on_pricing.rb +18 -0
  98. data/lib/recurly/resources/address.rb +46 -0
  99. data/lib/recurly/resources/billing_info.rb +66 -0
  100. data/lib/recurly/resources/billing_info_updated_by.rb +18 -0
  101. data/lib/recurly/resources/binary_file.rb +14 -0
  102. data/lib/recurly/resources/coupon.rb +130 -0
  103. data/lib/recurly/resources/coupon_discount.rb +26 -0
  104. data/lib/recurly/resources/coupon_discount_pricing.rb +18 -0
  105. data/lib/recurly/resources/coupon_discount_trial.rb +18 -0
  106. data/lib/recurly/resources/coupon_mini.rb +42 -0
  107. data/lib/recurly/resources/coupon_redemption.rb +50 -0
  108. data/lib/recurly/resources/coupon_redemption_mini.rb +34 -0
  109. data/lib/recurly/resources/credit_payment.rb +66 -0
  110. data/lib/recurly/resources/custom_field.rb +18 -0
  111. data/lib/recurly/resources/custom_field_definition.rb +50 -0
  112. data/lib/recurly/resources/error.rb +22 -0
  113. data/lib/recurly/resources/error_may_have_transaction.rb +26 -0
  114. data/lib/recurly/resources/export_dates.rb +18 -0
  115. data/lib/recurly/resources/export_file.rb +22 -0
  116. data/lib/recurly/resources/export_files.rb +18 -0
  117. data/lib/recurly/resources/fraud_info.rb +22 -0
  118. data/lib/recurly/resources/invoice.rb +146 -0
  119. data/lib/recurly/resources/invoice_address.rb +54 -0
  120. data/lib/recurly/resources/invoice_collection.rb +22 -0
  121. data/lib/recurly/resources/invoice_mini.rb +30 -0
  122. data/lib/recurly/resources/item.rb +82 -0
  123. data/lib/recurly/resources/item_mini.rb +34 -0
  124. data/lib/recurly/resources/line_item.rb +198 -0
  125. data/lib/recurly/resources/line_item_list.rb +26 -0
  126. data/lib/recurly/resources/measured_unit.rb +46 -0
  127. data/lib/recurly/resources/payment_method.rb +66 -0
  128. data/lib/recurly/resources/plan.rb +118 -0
  129. data/lib/recurly/resources/plan_hosted_pages.rb +26 -0
  130. data/lib/recurly/resources/plan_mini.rb +26 -0
  131. data/lib/recurly/resources/plan_pricing.rb +22 -0
  132. data/lib/recurly/resources/pricing.rb +18 -0
  133. data/lib/recurly/resources/settings.rb +22 -0
  134. data/lib/recurly/resources/shipping_address.rb +82 -0
  135. data/lib/recurly/resources/shipping_method.rb +46 -0
  136. data/lib/recurly/resources/shipping_method_mini.rb +26 -0
  137. data/lib/recurly/resources/site.rb +54 -0
  138. data/lib/recurly/resources/subscription.rb +174 -0
  139. data/lib/recurly/resources/subscription_add_on.rb +66 -0
  140. data/lib/recurly/resources/subscription_add_on_tier.rb +18 -0
  141. data/lib/recurly/resources/subscription_change.rb +78 -0
  142. data/lib/recurly/resources/subscription_change_preview.rb +78 -0
  143. data/lib/recurly/resources/subscription_shipping.rb +26 -0
  144. data/lib/recurly/resources/tax_info.rb +22 -0
  145. data/lib/recurly/resources/tier.rb +18 -0
  146. data/lib/recurly/resources/transaction.rb +158 -0
  147. data/lib/recurly/resources/transaction_error.rb +38 -0
  148. data/lib/recurly/resources/transaction_payment_gateway.rb +26 -0
  149. data/lib/recurly/resources/unique_coupon_code.rb +50 -0
  150. data/lib/recurly/resources/usage.rb +70 -0
  151. data/lib/recurly/resources/user.rb +42 -0
  152. data/lib/recurly/resources.rb +18 -0
  153. data/lib/recurly/schema/file_parser.rb +13 -0
  154. data/lib/recurly/schema/json_parser.rb +72 -0
  155. data/lib/recurly/schema/request_caster.rb +60 -0
  156. data/lib/recurly/schema/resource_caster.rb +46 -0
  157. data/lib/recurly/schema/schema_factory.rb +48 -0
  158. data/lib/recurly/schema/schema_validator.rb +144 -0
  159. data/lib/recurly/schema.rb +156 -0
  160. data/lib/recurly/version.rb +1 -15
  161. data/lib/recurly.rb +15 -137
  162. data/openapi/api.yaml +21024 -0
  163. data/recurly.gemspec +39 -0
  164. data/scripts/build +5 -0
  165. data/scripts/bump +11 -0
  166. data/scripts/changelog +14 -0
  167. data/scripts/clean +6 -0
  168. data/scripts/format +12 -0
  169. data/scripts/prepare-release +36 -0
  170. data/scripts/release +32 -0
  171. data/scripts/test +15 -0
  172. metadata +206 -168
  173. data/lib/recurly/account.rb +0 -169
  174. data/lib/recurly/account_balance.rb +0 -21
  175. data/lib/recurly/add_on.rb +0 -30
  176. data/lib/recurly/address.rb +0 -25
  177. data/lib/recurly/adjustment.rb +0 -76
  178. data/lib/recurly/api/errors.rb +0 -206
  179. data/lib/recurly/api/net_http_adapter.rb +0 -111
  180. data/lib/recurly/api.rb +0 -101
  181. data/lib/recurly/billing_info.rb +0 -80
  182. data/lib/recurly/coupon.rb +0 -134
  183. data/lib/recurly/credit_payment.rb +0 -28
  184. data/lib/recurly/custom_field.rb +0 -15
  185. data/lib/recurly/delivery.rb +0 -19
  186. data/lib/recurly/error.rb +0 -13
  187. data/lib/recurly/gift_card.rb +0 -79
  188. data/lib/recurly/helper.rb +0 -51
  189. data/lib/recurly/invoice.rb +0 -268
  190. data/lib/recurly/invoice_collection.rb +0 -14
  191. data/lib/recurly/js.rb +0 -14
  192. data/lib/recurly/juris_detail.rb +0 -14
  193. data/lib/recurly/measured_unit.rb +0 -16
  194. data/lib/recurly/money.rb +0 -120
  195. data/lib/recurly/plan.rb +0 -40
  196. data/lib/recurly/purchase.rb +0 -219
  197. data/lib/recurly/redemption.rb +0 -46
  198. data/lib/recurly/resource/association.rb +0 -16
  199. data/lib/recurly/resource/errors.rb +0 -20
  200. data/lib/recurly/resource/pager.rb +0 -314
  201. data/lib/recurly/shipping_address.rb +0 -22
  202. data/lib/recurly/subscription/add_ons.rb +0 -77
  203. data/lib/recurly/subscription.rb +0 -325
  204. data/lib/recurly/subscription_add_on.rb +0 -50
  205. data/lib/recurly/tax_detail.rb +0 -14
  206. data/lib/recurly/tax_type.rb +0 -12
  207. data/lib/recurly/transaction/errors.rb +0 -107
  208. data/lib/recurly/transaction.rb +0 -116
  209. data/lib/recurly/usage.rb +0 -24
  210. data/lib/recurly/webhook/account_notification.rb +0 -10
  211. data/lib/recurly/webhook/billing_info_updated_notification.rb +0 -6
  212. data/lib/recurly/webhook/canceled_account_notification.rb +0 -6
  213. data/lib/recurly/webhook/canceled_subscription_notification.rb +0 -6
  214. data/lib/recurly/webhook/closed_credit_invoice_notification.rb +0 -6
  215. data/lib/recurly/webhook/closed_invoice_notification.rb +0 -6
  216. data/lib/recurly/webhook/credit_payment_notification.rb +0 -12
  217. data/lib/recurly/webhook/dunning_notification.rb +0 -14
  218. data/lib/recurly/webhook/expired_subscription_notification.rb +0 -6
  219. data/lib/recurly/webhook/failed_charge_invoice_notification.rb +0 -6
  220. data/lib/recurly/webhook/failed_payment_notification.rb +0 -6
  221. data/lib/recurly/webhook/gift_card_notification.rb +0 -8
  222. data/lib/recurly/webhook/invoice_notification.rb +0 -12
  223. data/lib/recurly/webhook/new_account_notification.rb +0 -6
  224. data/lib/recurly/webhook/new_charge_invoice_notification.rb +0 -6
  225. data/lib/recurly/webhook/new_credit_invoice_notification.rb +0 -6
  226. data/lib/recurly/webhook/new_credit_payment_notification.rb +0 -6
  227. data/lib/recurly/webhook/new_dunning_event_notification.rb +0 -6
  228. data/lib/recurly/webhook/new_invoice_notification.rb +0 -6
  229. data/lib/recurly/webhook/new_subscription_notification.rb +0 -6
  230. data/lib/recurly/webhook/new_usage_notification.rb +0 -8
  231. data/lib/recurly/webhook/notification.rb +0 -18
  232. data/lib/recurly/webhook/paid_charge_invoice_notification.rb +0 -6
  233. data/lib/recurly/webhook/past_due_charge_invoice_notification.rb +0 -6
  234. data/lib/recurly/webhook/past_due_invoice_notification.rb +0 -6
  235. data/lib/recurly/webhook/processing_charge_invoice_notification.rb +0 -6
  236. data/lib/recurly/webhook/processing_credit_invoice_notification.rb +0 -6
  237. data/lib/recurly/webhook/processing_invoice_notification.rb +0 -6
  238. data/lib/recurly/webhook/processing_payment_notification.rb +0 -6
  239. data/lib/recurly/webhook/purchased_gift_card_notification.rb +0 -7
  240. data/lib/recurly/webhook/reactivated_account_notification.rb +0 -6
  241. data/lib/recurly/webhook/redeemed_gift_card_notification.rb +0 -7
  242. data/lib/recurly/webhook/renewed_subscription_notification.rb +0 -6
  243. data/lib/recurly/webhook/reopened_charge_invoice_notification.rb +0 -6
  244. data/lib/recurly/webhook/reopened_credit_invoice_notification.rb +0 -6
  245. data/lib/recurly/webhook/scheduled_payment_notification.rb +0 -6
  246. data/lib/recurly/webhook/subscription_notification.rb +0 -12
  247. data/lib/recurly/webhook/successful_payment_notification.rb +0 -6
  248. data/lib/recurly/webhook/successful_refund_notification.rb +0 -6
  249. data/lib/recurly/webhook/transaction_authorized_notification.rb +0 -6
  250. data/lib/recurly/webhook/transaction_notification.rb +0 -12
  251. data/lib/recurly/webhook/updated_account_notification.rb +0 -6
  252. data/lib/recurly/webhook/updated_balance_gift_card_notification.rb +0 -7
  253. data/lib/recurly/webhook/updated_subscription_notification.rb +0 -6
  254. data/lib/recurly/webhook/void_payment_notification.rb +0 -6
  255. data/lib/recurly/webhook/voided_credit_invoice_notification.rb +0 -6
  256. data/lib/recurly/webhook/voided_credit_payment_notification.rb +0 -6
  257. data/lib/recurly/webhook.rb +0 -88
  258. data/lib/recurly/xml/nokogiri.rb +0 -58
  259. data/lib/recurly/xml/rexml.rb +0 -50
  260. data/lib/recurly/xml.rb +0 -120
@@ -0,0 +1,156 @@
1
+ module Recurly
2
+ # The class responsible for describing a schema.
3
+ # This is used for requests and resources.
4
+ class Schema
5
+ # The attributes in the schema
6
+ # @return [Hash<String,Attribute>]
7
+ attr_reader :attributes
8
+
9
+ def initialize
10
+ @attributes = {}
11
+ end
12
+
13
+ # Adds an attribute to the schema definition
14
+ #
15
+ # @param name [Symbol] The name of the attribute
16
+ # @param type [Class,Symbol] The type of the attribute. Use capitalized symbol for Recurly class. Example: :Account.
17
+ # @param options [Schema::Attribute] The created and registered attribute object.
18
+ def add_attribute(name, type, options)
19
+ attribute = Attribute.build(type, options)
20
+ @attributes[name.to_s] = attribute
21
+ attribute
22
+ end
23
+
24
+ # Gets an attribute from this schema given a name
25
+ #
26
+ # @param name [String,Symbol] The name/key of the attribute
27
+ # @return [Attribute,nil] The found Attribute. nil if not found.
28
+ def get_attribute(name)
29
+ @attributes[name.to_s]
30
+ end
31
+
32
+ # Gets a recurly class given a symbol name.
33
+ #
34
+ # @example
35
+ # Schema.get_recurly_class(:Account)
36
+ # #=> Recurly::Resources::Account
37
+ #
38
+ # @param type [Symbol] The name of the class you wish to find
39
+ # @return [Request,Resource]
40
+ # @raise ArgumentError If class can't be found.
41
+ def self.get_recurly_class(type)
42
+ raise ArgumentError, "#{type.inspect} must be a symbol but is a #{type.class}" unless type.is_a?(Symbol)
43
+
44
+ if type == :Address
45
+ Recurly::Resources::Address
46
+ elsif Recurly::Requests.const_defined?(type, false)
47
+ Recurly::Requests.const_get(type, false)
48
+ elsif Recurly::Resources.const_defined?(type, false)
49
+ Recurly::Resources.const_get(type, false)
50
+ else
51
+ raise ArgumentError, "Recurly type '#{type}' is unknown"
52
+ end
53
+ end
54
+
55
+ class Attribute
56
+ # The type of the attribute. Might be a class like `DateTime`
57
+ # or could be a Recurly object. In this case a symbol should be used.
58
+ # Example: :Account. To get the Recurly type use #recurly_class
59
+ # @return [Class,Symbol]
60
+ attr_reader :type
61
+
62
+ PRIMITIVE_TYPES = [
63
+ String,
64
+ Integer,
65
+ Float,
66
+ Hash,
67
+ ].freeze
68
+
69
+ def self.build(type, options = {})
70
+ if PRIMITIVE_TYPES.include? type
71
+ PrimitiveAttribute.new(type)
72
+ elsif type == :Boolean
73
+ BooleanAttribute.new
74
+ elsif type == DateTime
75
+ DateTimeAttribute.new
76
+ elsif type.is_a? Symbol
77
+ ResourceAttribute.new(type)
78
+ elsif type == Array
79
+ item_attr = build(options[:item_type])
80
+ ArrayAttribute.new(item_attr)
81
+ else
82
+ throw ArgumentError
83
+ end
84
+ end
85
+
86
+ def initialize(type = nil)
87
+ @type = type
88
+ end
89
+
90
+ def cast(value)
91
+ value
92
+ end
93
+
94
+ def recurly_class
95
+ @recurly_class ||= Schema.get_recurly_class(type)
96
+ end
97
+ end
98
+
99
+ class PrimitiveAttribute < Attribute
100
+ def is_valid?(value)
101
+ value.is_a? self.type
102
+ end
103
+ end
104
+
105
+ class BooleanAttribute < Attribute
106
+ def is_valid?(value)
107
+ [true, false].include? value
108
+ end
109
+ end
110
+
111
+ class DateTimeAttribute < Attribute
112
+ def is_valid?(value)
113
+ value.is_a?(String) || value.is_a?(DateTime)
114
+ end
115
+
116
+ def cast(value)
117
+ if value.is_a?(DateTime)
118
+ value
119
+ else
120
+ DateTime.parse(value)
121
+ end
122
+ end
123
+
124
+ def type
125
+ DateTime
126
+ end
127
+ end
128
+
129
+ class ResourceAttribute < Attribute
130
+ def is_valid?(value)
131
+ value.is_a? Hash
132
+ end
133
+
134
+ def cast(value)
135
+ self.recurly_class.cast(value)
136
+ end
137
+ end
138
+
139
+ class ArrayAttribute < Attribute
140
+ def is_valid?(value)
141
+ value.is_a? Array
142
+ end
143
+
144
+ def cast(value)
145
+ value.map do |v|
146
+ self.type.cast(v)
147
+ end
148
+ end
149
+ end
150
+ end
151
+
152
+ require_relative "./schema/schema_factory"
153
+ require_relative "./schema/schema_validator"
154
+ require_relative "./schema/resource_caster"
155
+ require_relative "./schema/request_caster"
156
+ end
@@ -1,17 +1,3 @@
1
1
  module Recurly
2
- module Version
3
- MAJOR = 2
4
- MINOR = 17
5
- PATCH = 0
6
- PRE = nil
7
-
8
- VERSION = [MAJOR, MINOR, PATCH, PRE].compact.join('.').freeze
9
-
10
- class << self
11
- def inspect
12
- VERSION.dup
13
- end
14
- alias to_s inspect
15
- end
16
- end
2
+ VERSION = "3.14.0"
17
3
  end
data/lib/recurly.rb CHANGED
@@ -1,140 +1,18 @@
1
- # Recurly is a Ruby client for Recurly's REST API.
2
- module Recurly
3
- require 'recurly/error'
4
- require 'recurly/helper'
5
- require 'recurly/api'
6
- require 'recurly/resource'
7
- require 'recurly/shipping_address'
8
- require 'recurly/billing_info'
9
- require 'recurly/custom_field'
10
- require 'recurly/account'
11
- require 'recurly/account_balance'
12
- require 'recurly/add_on'
13
- require 'recurly/address'
14
- require 'recurly/tax_detail'
15
- require 'recurly/tax_type'
16
- require 'recurly/juris_detail'
17
- require 'recurly/adjustment'
18
- require 'recurly/coupon'
19
- require 'recurly/credit_payment'
20
- require 'recurly/helper'
21
- require 'recurly/invoice'
22
- require 'recurly/invoice_collection'
23
- require 'recurly/js'
24
- require 'recurly/money'
25
- require 'recurly/measured_unit'
26
- require 'recurly/plan'
27
- require 'recurly/redemption'
28
- require 'recurly/subscription'
29
- require 'recurly/subscription_add_on'
30
- require 'recurly/transaction'
31
- require 'recurly/usage'
32
- require 'recurly/version'
33
- require 'recurly/xml'
34
- require 'recurly/delivery'
35
- require 'recurly/gift_card'
36
- require 'recurly/purchase'
37
- require 'recurly/webhook'
38
-
39
- @subdomain = nil
40
-
41
- # This exception is raised if Recurly has not been configured.
42
- class ConfigurationError < Error
43
- end
44
-
45
- class << self
46
- # Set a config based on current thread context.
47
- # Any default set will say in effect unless overwritten in the config_params.
48
- # Call this method with out any arguments to have it unset the thread context config values.
49
- # @param config_params - Hash with the following keys: subdomain, api_key, default_currency
50
- def config(config_params = nil)
51
- Thread.current[:recurly_config] = config_params
52
- end
53
-
54
- # @return [String] A subdomain.
55
- def subdomain
56
- if Thread.current[:recurly_config] && Thread.current[:recurly_config][:subdomain]
57
- return Thread.current[:recurly_config][:subdomain]
58
- end
59
- @subdomain || 'api'
60
- end
61
- attr_writer :subdomain
62
-
63
- # @return [String] An API key.
64
- # @raise [ConfigurationError] If not configured.
65
- def api_key
66
- if Thread.current[:recurly_config] && Thread.current[:recurly_config][:api_key]
67
- return Thread.current[:recurly_config][:api_key]
68
- end
69
-
70
- defined? @api_key and @api_key or raise(
71
- ConfigurationError, "Recurly.api_key not configured"
72
- )
73
- end
74
- attr_writer :api_key
1
+ require "recurly/version"
2
+ require "recurly/schema"
3
+ require "recurly/request"
4
+ require "recurly/resource"
5
+ require "recurly/pager"
6
+ require "recurly/requests"
7
+ require "recurly/resources"
8
+ require "recurly/http"
9
+ require "recurly/errors"
10
+ require "recurly/connection_pool"
11
+ require "recurly/client"
75
12
 
76
- # @return [String, nil] A default currency.
77
- def default_currency
78
- if Thread.current[:recurly_config] && Thread.current[:recurly_config][:default_currency]
79
- return Thread.current[:recurly_config][:default_currency]
80
- end
81
-
82
- return @default_currency if defined? @default_currency
83
- @default_currency = 'USD'
84
- end
85
- attr_writer :default_currency
86
-
87
- # @return [JS] The Recurly.js module.
88
- def js
89
- JS
90
- end
91
-
92
- # Assigns a logger to log requests/responses and more.
93
- # The logger can only be set if the environment variable
94
- # `RECURLY_INSECURE_DEBUG` equals `true`.
95
- #
96
- # @return [Logger, nil]
97
- # @example
98
- # require 'logger'
99
- # Recurly.logger = Logger.new STDOUT
100
- # @example Rails applications automatically log to the Rails log:
101
- # Recurly.logger = Rails.logger
102
- # @example Turn off logging entirely:
103
- # Recurly.logger = nil # Or Recurly.logger = Logger.new nil
104
- attr_accessor :logger
105
-
106
- def logger=(logger)
107
- if ENV['RECURLY_INSECURE_DEBUG'].to_s.downcase == 'true'
108
- @logger = logger
109
- puts <<-MSG
110
- [WARNING] Recurly logger enabled. The logger has the potential to leak
111
- PII and should never be used in production environments.
112
- MSG
113
- else
114
- puts <<-MSG
115
- [WARNING] Recurly logger has been disabled. If you wish to use it,
116
- only do so in a non-production environment and make sure
117
- the `RECURLY_INSECURE_DEBUG` environment variable is set to `true`.
118
- MSG
119
- end
120
- end
121
-
122
- # Convenience logging method includes a Logger#progname dynamically.
123
- # @return [true, nil]
124
- def log level, message
125
- logger.send(level, name) { message }
126
- end
127
-
128
- if RUBY_VERSION <= "1.9.0"
129
- def const_defined? sym, inherit = false
130
- raise ArgumentError, "inherit must be false" if inherit
131
- super sym
132
- end
133
-
134
- def const_get sym, inherit = false
135
- raise ArgumentError, "inherit must be false" if inherit
136
- super sym
137
- end
138
- end
13
+ module Recurly
14
+ STRICT_MODE = ENV["RECURLY_STRICT_MODE"] && ENV["RECURLY_STRICT_MODE"].downcase == "true"
15
+ if STRICT_MODE
16
+ puts "[Recurly] [WARNING] STRICT_MODE enabled. This should only be used for testing purposes."
139
17
  end
140
18
  end