recurly 2.17.0 → 3.14.0

Sign up to get free protection for your applications and to get access to all the features.
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