mangopay-v4 4.0.0 → 4.0.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 +5 -5
  2. data/.gitignore +29 -29
  3. data/.rspec +3 -3
  4. data/.rubocop.yml +1 -1
  5. data/.travis.yml +21 -13
  6. data/Gemfile +2 -2
  7. data/LICENSE +20 -20
  8. data/README.md +379 -379
  9. data/bin/mangopay +9 -9
  10. data/lib/mangopay.rb +132 -132
  11. data/lib/mangopay/api/api.rb +8 -8
  12. data/lib/mangopay/api/api_methods.rb +160 -136
  13. data/lib/mangopay/api/auth_token_manager.rb +173 -173
  14. data/lib/mangopay/api/http_client.rb +324 -324
  15. data/lib/mangopay/api/service/bank_accounts.rb +145 -145
  16. data/lib/mangopay/api/service/banking_aliases.rb +83 -0
  17. data/lib/mangopay/api/service/cards.rb +151 -151
  18. data/lib/mangopay/api/service/client_wallets.rb +88 -88
  19. data/lib/mangopay/api/service/clients.rb +67 -67
  20. data/lib/mangopay/api/service/dispute_documents.rb +157 -157
  21. data/lib/mangopay/api/service/disputes.rb +186 -186
  22. data/lib/mangopay/api/service/e_money.rb +63 -41
  23. data/lib/mangopay/api/service/events.rb +46 -46
  24. data/lib/mangopay/api/service/hooks.rb +92 -92
  25. data/lib/mangopay/api/service/kyc_documents.rb +152 -152
  26. data/lib/mangopay/api/service/mandates.rb +141 -141
  27. data/lib/mangopay/api/service/oauth_tokens.rb +24 -24
  28. data/lib/mangopay/api/service/pay_ins.rb +369 -259
  29. data/lib/mangopay/api/service/pay_outs.rb +53 -53
  30. data/lib/mangopay/api/service/pre_authorizations.rb +126 -68
  31. data/lib/mangopay/api/service/refunds.rb +159 -61
  32. data/lib/mangopay/api/service/reports.rb +150 -150
  33. data/lib/mangopay/api/service/repudiations.rb +31 -31
  34. data/lib/mangopay/api/service/responses.rb +101 -101
  35. data/lib/mangopay/api/service/settlement_transfers.rb +54 -54
  36. data/lib/mangopay/api/service/transactions.rb +246 -182
  37. data/lib/mangopay/api/service/transfers.rb +53 -53
  38. data/lib/mangopay/api/service/ubo_declarations.rb +94 -69
  39. data/lib/mangopay/api/service/users.rb +162 -162
  40. data/lib/mangopay/api/service/wallets.rb +98 -98
  41. data/lib/mangopay/api/uri_provider.rb +32 -34
  42. data/lib/mangopay/common/json_tag_converter.rb +70 -67
  43. data/lib/mangopay/common/jsonifier.rb +266 -248
  44. data/lib/mangopay/common/log_provider.rb +33 -33
  45. data/lib/mangopay/common/rate_limit_interval.rb +16 -16
  46. data/lib/mangopay/common/read_only_fields.rb +26 -26
  47. data/lib/mangopay/common/response_error.rb +61 -61
  48. data/lib/mangopay/common/sort_direction.rb +14 -14
  49. data/lib/mangopay/common/sort_field.rb +12 -12
  50. data/lib/mangopay/common/template_url_options.rb +8 -8
  51. data/lib/mangopay/configuration.rb +38 -38
  52. data/lib/mangopay/environment.rb +65 -65
  53. data/lib/mangopay/model/address.rb +26 -26
  54. data/lib/mangopay/model/billing.rb +13 -0
  55. data/lib/mangopay/model/birthplace.rb +15 -0
  56. data/lib/mangopay/model/declared_ubo.rb +20 -20
  57. data/lib/mangopay/model/dispute_reason.rb +14 -14
  58. data/lib/mangopay/model/document_page_consult.rb +14 -14
  59. data/lib/mangopay/model/e_money.rb +17 -17
  60. data/lib/mangopay/model/entity/account/bank_account.rb +25 -25
  61. data/lib/mangopay/model/entity/account/ca_bank_account.rb +26 -26
  62. data/lib/mangopay/model/entity/account/debited_bank_account.rb +31 -0
  63. data/lib/mangopay/model/entity/account/gb_bank_account.rb +20 -20
  64. data/lib/mangopay/model/entity/account/iban_bank_account.rb +20 -20
  65. data/lib/mangopay/model/entity/account/other_bank_account.rb +23 -23
  66. data/lib/mangopay/model/entity/account/us_bank_account.rb +23 -23
  67. data/lib/mangopay/model/entity/banking_alias.rb +27 -0
  68. data/lib/mangopay/model/entity/card.rb +44 -44
  69. data/lib/mangopay/model/entity/card_registration.rb +42 -42
  70. data/lib/mangopay/model/entity/client.rb +65 -62
  71. data/lib/mangopay/model/entity/client_wallet.rb +22 -22
  72. data/lib/mangopay/model/entity/dispute.rb +49 -49
  73. data/lib/mangopay/model/entity/dispute_document.rb +28 -28
  74. data/lib/mangopay/model/entity/entity_base.rb +17 -17
  75. data/lib/mangopay/model/entity/hook.rb +25 -25
  76. data/lib/mangopay/model/entity/kyc_document.rb +27 -27
  77. data/lib/mangopay/model/entity/mandate.rb +50 -50
  78. data/lib/mangopay/model/entity/pay_in/apple_pay_direct_pay_in.rb +26 -0
  79. data/lib/mangopay/model/entity/pay_in/bank_wire_direct_pay_in.rb +24 -21
  80. data/lib/mangopay/model/entity/pay_in/bank_wire_external_instruction_pay_in.rb +19 -0
  81. data/lib/mangopay/model/entity/pay_in/card_direct_pay_in.rb +41 -32
  82. data/lib/mangopay/model/entity/pay_in/card_pre_authorized_pay_in.rb +15 -12
  83. data/lib/mangopay/model/entity/pay_in/card_web_pay_in.rb +36 -39
  84. data/lib/mangopay/model/entity/pay_in/direct_debit_direct_pay_in.rb +25 -22
  85. data/lib/mangopay/model/entity/pay_in/direct_debit_web_pay_in.rb +37 -37
  86. data/lib/mangopay/model/entity/pay_in/google_pay_direct_pay_in.rb +28 -0
  87. data/lib/mangopay/model/entity/pay_in/pay_in.rb +18 -15
  88. data/lib/mangopay/model/entity/pay_in/paypal_web_pay_in.rb +15 -0
  89. data/lib/mangopay/model/entity/pay_out.rb +21 -21
  90. data/lib/mangopay/model/entity/pre_authorization.rb +74 -67
  91. data/lib/mangopay/model/entity/refund.rb +17 -17
  92. data/lib/mangopay/model/entity/report.rb +50 -50
  93. data/lib/mangopay/model/entity/repudiation.rb +17 -17
  94. data/lib/mangopay/model/entity/settlement_transfer.rb +16 -16
  95. data/lib/mangopay/model/entity/transaction.rb +51 -51
  96. data/lib/mangopay/model/entity/transfer.rb +12 -12
  97. data/lib/mangopay/model/entity/ubo.rb +30 -0
  98. data/lib/mangopay/model/entity/ubo_declaration.rb +29 -31
  99. data/lib/mangopay/model/entity/user/legal_user.rb +55 -52
  100. data/lib/mangopay/model/entity/user/natural_user.rb +49 -49
  101. data/lib/mangopay/model/entity/user/user.rb +17 -17
  102. data/lib/mangopay/model/entity/wallet.rb +27 -27
  103. data/lib/mangopay/model/enum/account_type.rb +23 -23
  104. data/lib/mangopay/model/enum/avs_result.rb +19 -0
  105. data/lib/mangopay/model/enum/banking_alias_type.rb +12 -0
  106. data/lib/mangopay/model/enum/business_type.rb +17 -0
  107. data/lib/mangopay/model/enum/card_status.rb +14 -14
  108. data/lib/mangopay/model/enum/card_type.rb +32 -32
  109. data/lib/mangopay/model/enum/card_validity.rb +18 -18
  110. data/lib/mangopay/model/enum/country_iso.rb +758 -758
  111. data/lib/mangopay/model/enum/culture_code.rb +43 -43
  112. data/lib/mangopay/model/enum/currency_iso.rb +551 -551
  113. data/lib/mangopay/model/enum/declared_ubo_refused_reason_type.rb +15 -15
  114. data/lib/mangopay/model/enum/declared_ubo_status.rb +17 -17
  115. data/lib/mangopay/model/enum/deposit_type.rb +14 -14
  116. data/lib/mangopay/model/enum/direct_debit_type.rb +12 -12
  117. data/lib/mangopay/model/enum/dispute_doc_refused_reason_type.rb +24 -24
  118. data/lib/mangopay/model/enum/dispute_document_type.rb +22 -22
  119. data/lib/mangopay/model/enum/dispute_reason_type.rb +32 -32
  120. data/lib/mangopay/model/enum/dispute_status.rb +20 -20
  121. data/lib/mangopay/model/enum/dispute_type.rb +14 -14
  122. data/lib/mangopay/model/enum/document_status.rb +20 -20
  123. data/lib/mangopay/model/enum/download_format.rb +10 -10
  124. data/lib/mangopay/model/enum/event_type.rb +76 -73
  125. data/lib/mangopay/model/enum/funds_type.rb +14 -14
  126. data/lib/mangopay/model/enum/hook_status.rb +12 -12
  127. data/lib/mangopay/model/enum/hook_validity.rb +14 -14
  128. data/lib/mangopay/model/enum/income_range.rb +20 -20
  129. data/lib/mangopay/model/enum/kyc_doc_refused_reason_type.rb +36 -36
  130. data/lib/mangopay/model/enum/kyc_document_type.rb +18 -18
  131. data/lib/mangopay/model/enum/kyc_level.rb +12 -12
  132. data/lib/mangopay/model/enum/legal_person_type.rb +14 -14
  133. data/lib/mangopay/model/enum/mandate_culture_code.rb +22 -22
  134. data/lib/mangopay/model/enum/mandate_execution_type.rb +10 -10
  135. data/lib/mangopay/model/enum/mandate_scheme.rb +12 -12
  136. data/lib/mangopay/model/enum/mandate_status.rb +23 -23
  137. data/lib/mangopay/model/enum/mandate_type.rb +10 -10
  138. data/lib/mangopay/model/enum/natural_user_capacity.rb +14 -14
  139. data/lib/mangopay/model/enum/pay_in_execution_type.rb +17 -17
  140. data/lib/mangopay/model/enum/pay_in_payment_type.rb +29 -20
  141. data/lib/mangopay/model/enum/pay_out_payment_type.rb +10 -10
  142. data/lib/mangopay/model/enum/payment_status.rb +20 -20
  143. data/lib/mangopay/model/enum/person_type.rb +14 -14
  144. data/lib/mangopay/model/enum/platform_type.rb +22 -22
  145. data/lib/mangopay/model/enum/pre_authorization_execution_type.rb +10 -10
  146. data/lib/mangopay/model/enum/pre_authorization_status.rb +17 -17
  147. data/lib/mangopay/model/enum/refund_reason_type.rb +20 -20
  148. data/lib/mangopay/model/enum/report_status.rb +16 -16
  149. data/lib/mangopay/model/enum/report_type.rb +12 -12
  150. data/lib/mangopay/model/enum/sector.rb +29 -0
  151. data/lib/mangopay/model/enum/secure_mode.rb +15 -15
  152. data/lib/mangopay/model/enum/transaction_nature.rb +16 -16
  153. data/lib/mangopay/model/enum/transaction_status.rb +14 -14
  154. data/lib/mangopay/model/enum/transaction_type.rb +14 -14
  155. data/lib/mangopay/model/enum/ubo_declaration_refused_reason_type.rb +18 -18
  156. data/lib/mangopay/model/enum/ubo_declaration_status.rb +20 -20
  157. data/lib/mangopay/model/event.rb +17 -17
  158. data/lib/mangopay/model/model.rb +214 -193
  159. data/lib/mangopay/model/money.rb +16 -16
  160. data/lib/mangopay/model/pay_in_web_extended_view.rb +30 -30
  161. data/lib/mangopay/model/platform_categorization.rb +15 -0
  162. data/lib/mangopay/model/refund_reason.rb +14 -14
  163. data/lib/mangopay/model/report_filter.rb +82 -82
  164. data/lib/mangopay/model/request/cancel_request.rb +15 -15
  165. data/lib/mangopay/model/request/complete_registration_request.rb +12 -12
  166. data/lib/mangopay/model/request/currency_request.rb +12 -12
  167. data/lib/mangopay/model/request/deactivation_request.rb +9 -9
  168. data/lib/mangopay/model/request/filter_request.rb +37 -37
  169. data/lib/mangopay/model/request/submit_document_request.rb +13 -13
  170. data/lib/mangopay/model/request/submit_ubo_declaration_request.rb +16 -13
  171. data/lib/mangopay/model/request/upload_file_request.rb +8 -8
  172. data/lib/mangopay/model/response_replica.rb +26 -26
  173. data/lib/mangopay/model/security_info.rb +13 -0
  174. data/lib/mangopay/util/custom_formatter.rb +11 -11
  175. data/lib/mangopay/util/custom_logger.rb +33 -33
  176. data/lib/mangopay/util/enum.rb +51 -51
  177. data/lib/mangopay/util/file_encoder.rb +15 -15
  178. data/lib/mangopay/util/non_instantiable.rb +5 -5
  179. data/lib/mangopay/util/storage_strategy.rb +9 -9
  180. data/lib/mangopay/util/void_logger.rb +5 -5
  181. data/mangopay-v4.gemspec +32 -0
  182. data/mangopay.gemspec +32 -32
  183. data/spec/context/address_context.rb +24 -24
  184. data/spec/context/bank_account_context.rb +137 -137
  185. data/spec/context/banking_alias_context.rb +17 -0
  186. data/spec/context/birthplace_context.rb +17 -0
  187. data/spec/context/card_context.rb +45 -45
  188. data/spec/context/client_context.rb +43 -44
  189. data/spec/context/dispute_context.rb +36 -36
  190. data/spec/context/dispute_document_context.rb +19 -19
  191. data/spec/context/hook_context.rb +15 -15
  192. data/spec/context/kyc_document_context.rb +22 -22
  193. data/spec/context/mandate_context.rb +26 -26
  194. data/spec/context/pay_in_context.rb +319 -224
  195. data/spec/context/pay_out_context.rb +39 -38
  196. data/spec/context/pre_authorization_context.rb +44 -40
  197. data/spec/context/refund_context.rb +32 -32
  198. data/spec/context/report_context.rb +21 -21
  199. data/spec/context/repudiation_context.rb +18 -18
  200. data/spec/context/settlement_transfer_context.rb +27 -27
  201. data/spec/context/transfer_context.rb +50 -50
  202. data/spec/context/ubo_declaration_context.rb +29 -24
  203. data/spec/context/user_context.rb +83 -82
  204. data/spec/context/wallet_context.rb +52 -52
  205. data/spec/mangopay/bank_accounts_spec.rb +228 -228
  206. data/spec/mangopay/banking_alias_spec.rb +85 -0
  207. data/spec/mangopay/cards_spec.rb +133 -134
  208. data/spec/mangopay/client_wallets_spec.rb +147 -147
  209. data/spec/mangopay/clients_spec.rb +56 -54
  210. data/spec/mangopay/configuration_spec.rb +125 -125
  211. data/spec/mangopay/dispute_documents_spec.rb +173 -173
  212. data/spec/mangopay/disputes_spec.rb +264 -264
  213. data/spec/mangopay/e_money_spec.rb +57 -37
  214. data/spec/mangopay/events_spec.rb +49 -49
  215. data/spec/mangopay/hooks_spec.rb +70 -70
  216. data/spec/mangopay/kyc_documents_spec.rb +179 -179
  217. data/spec/mangopay/mandates_spec.rb +218 -218
  218. data/spec/mangopay/oauth_tokens_spec.rb +40 -40
  219. data/spec/mangopay/pay_ins_spec.rb +279 -180
  220. data/spec/mangopay/pay_outs_spec.rb +38 -38
  221. data/spec/mangopay/pre_authorizations_spec.rb +134 -57
  222. data/spec/mangopay/refunds_spec.rb +187 -39
  223. data/spec/mangopay/reports_spec.rb +118 -120
  224. data/spec/mangopay/responses_spec.rb +324 -294
  225. data/spec/mangopay/settlement_transfers_spec.rb +36 -36
  226. data/spec/mangopay/transactions_spec.rb +347 -232
  227. data/spec/mangopay/transfers_spec.rb +37 -37
  228. data/spec/mangopay/ubo_declarations_spec.rb +127 -64
  229. data/spec/mangopay/users_spec.rb +145 -145
  230. data/spec/mangopay/wallets_spec.rb +103 -103
  231. data/spec/spec_helper.rb +72 -72
  232. data/spec/tmp/MangoPay.AuthorizationToken.FileStore.tmp +6 -0
  233. data/spec/tmp/mangopay.log.tmp +1201 -0
  234. metadata +31 -5
@@ -1,34 +1,34 @@
1
- require_relative '../util/custom_logger'
2
- require_relative '../util/void_logger'
3
- require_relative '../util/custom_formatter'
4
-
5
- module MangoPay
6
-
7
- # Provides logger objects.
8
- class LogProvider
9
-
10
- ENABLE_LOGGING = true
11
- ENABLE_HTTP_LOGGING = true
12
-
13
- class << self
14
-
15
- def provide(context)
16
- if needs_http_logger(context) && ENABLE_HTTP_LOGGING\
17
- || !(needs_http_logger(context) && ENABLE_LOGGING)
18
- logger = CustomLogger.new(STDOUT)
19
- logger.progname = context.name
20
- logger.formatter = CustomFormatter.new
21
- logger
22
- else
23
- VoidLogger.new
24
- end
25
- end
26
-
27
- private
28
-
29
- def needs_http_logger(context)
30
- context.name =~ /HttpClient/ || context.name =~ /Jsonifier/
31
- end
32
- end
33
- end
1
+ require_relative '../util/custom_logger'
2
+ require_relative '../util/void_logger'
3
+ require_relative '../util/custom_formatter'
4
+
5
+ module MangoPay
6
+
7
+ # Provides logger objects.
8
+ class LogProvider
9
+
10
+ ENABLE_LOGGING = false
11
+ ENABLE_HTTP_LOGGING = false
12
+
13
+ class << self
14
+
15
+ def provide(context)
16
+ if needs_http_logger(context) && ENABLE_HTTP_LOGGING\
17
+ || (!needs_http_logger(context) && ENABLE_LOGGING)
18
+ logger = CustomLogger.new(STDOUT)
19
+ logger.progname = context.name
20
+ logger.formatter = CustomFormatter.new
21
+ logger
22
+ else
23
+ VoidLogger.new
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def needs_http_logger(context)
30
+ context.name =~ /HttpClient/ || context.name =~ /Jsonifier/
31
+ end
32
+ end
33
+ end
34
34
  end
@@ -1,17 +1,17 @@
1
- require_relative '../util/enum'
2
-
3
- module MangoPay
4
-
5
- # MangoPay API rate limit reset times enumeration
6
- class RateLimitInterval
7
- extend Enum
8
-
9
- FIFTEEN_MIN = value 'FIFTEEN_MINUTES'
10
-
11
- THIRTY_MIN = value 'THIRTY_MINUTE'
12
-
13
- HOUR = value 'HOUR'
14
-
15
- DAY = value 'DAY'
16
- end
1
+ require_relative '../util/enum'
2
+
3
+ module MangoPay
4
+
5
+ # MangoPay API rate limit reset times enumeration
6
+ class RateLimitInterval
7
+ extend Enum
8
+
9
+ FIFTEEN_MIN = value 'FIFTEEN_MINUTES'
10
+
11
+ THIRTY_MIN = value 'THIRTY_MINUTE'
12
+
13
+ HOUR = value 'HOUR'
14
+
15
+ DAY = value 'DAY'
16
+ end
17
17
  end
@@ -1,27 +1,27 @@
1
- module MangoPay
2
-
3
- # Assures that no fields which are considered read-only
4
- # remain in a hash meant to be sent as a request body.
5
- module ReadOnlyFields
6
-
7
- @read_only_fields = %w[
8
- CreationDate
9
- ]
10
-
11
- class << self
12
-
13
- # Checks whether any of the fields marked as read-only
14
- # are present in the given hash. Removes those which are.
15
- #
16
- # @param +hash+ [Hash] hash to check for read-only fields
17
- # @return [Hash] the given hash minus any read-only fields
18
- #
19
- # noinspection RubyResolve
20
- def remove_from!(hash)
21
- @read_only_fields.each do |field|
22
- hash.delete field
23
- end
24
- end
25
- end
26
- end
1
+ module MangoPay
2
+
3
+ # Assures that no fields which are considered read-only
4
+ # remain in a hash meant to be sent as a request body.
5
+ module ReadOnlyFields
6
+
7
+ @read_only_fields = %w[
8
+ CreationDate, PaymentData
9
+ ]
10
+
11
+ class << self
12
+
13
+ # Checks whether any of the fields marked as read-only
14
+ # are present in the given hash. Removes those which are.
15
+ #
16
+ # @param +hash+ [Hash] hash to check for read-only fields
17
+ # @return [Hash] the given hash minus any read-only fields
18
+ #
19
+ # noinspection RubyResolve
20
+ def remove_from!(hash)
21
+ @read_only_fields.each do |field|
22
+ hash.delete field
23
+ end
24
+ end
25
+ end
26
+ end
27
27
  end
@@ -1,61 +1,61 @@
1
- module MangoPay
2
-
3
- # See http://docs.mangopay.com/api-references/response-codes-rules/
4
- # and http://docs.mangopay.com/api-references/error-codes/
5
- #
6
- # Thrown from any MangoPay API call whenever
7
- # it returns response with HTTP code != 200.
8
- # Check @details hash for further info.
9
- #
10
- # Two example exceptions with details:
11
- #
12
- # * <MangoPay::ResponseError:
13
- # One or several required parameters are missing or incorrect. [...]
14
- # Email: The Email field is required.>
15
- # {"Message"=>"One or several required parameters are missing or incorrect.
16
- # An incorrect resource ID also raises this kind of error.",
17
- # "Type"=>"param_error",
18
- # "Id"=>"66936e92-3f21-4a35-b6cf-f1d17c2fb6e5",
19
- # "Date"=>1409047252.0,
20
- # "errors"=>{"Email"=>"The Email field is required."},
21
- # "Code"=>"400",
22
- # "Url"=>"/v2/sdk-unit-tests/users/natural"}
23
- #
24
- # * <MangoPay::ResponseError: Internal Server Error>
25
- # {"Message"=>"Internal Server Error",
26
- # "Type"=>"other",
27
- # "Id"=>"7bdc5c6f-2000-4cd3-96f3-2a3fcb746f07",
28
- # "Date"=>1409047251.0,
29
- # "errors"=>nil,
30
- # "Code"=>"500",
31
- # "Url"=>"/v2/sdk-unit-tests/payins/3380640/refunds"}
32
- class ResponseError < StandardError
33
-
34
- attr_reader :request_url, :code, :details
35
-
36
- def initialize(request_url, code, details)
37
- @request_url = request_url
38
- @code = code
39
- @details = details
40
- super(message) if message
41
- end
42
-
43
- def type
44
- @details['Type'] if @details
45
- end
46
-
47
- def errors
48
- @details['errors'] if @details
49
- end
50
-
51
- def message
52
- return @message if @message
53
- msg = @details ? @details['Message'] : ''
54
- if errors && errors.is_a?(Hash)
55
- msg += errors.sort.map { |k, v| "\n#{k}: #{v}" }.join
56
- end
57
- @message = msg || "#{@code} #{@details['error']}"
58
- end
59
-
60
- end
61
- end
1
+ module MangoPay
2
+
3
+ # See http://docs.mangopay.com/api-references/response-codes-rules/
4
+ # and http://docs.mangopay.com/api-references/error-codes/
5
+ #
6
+ # Thrown from any MangoPay API call whenever
7
+ # it returns response with HTTP code != 200.
8
+ # Check @details hash for further info.
9
+ #
10
+ # Two example exceptions with details:
11
+ #
12
+ # * <MangoPay::ResponseError:
13
+ # One or several required parameters are missing or incorrect. [...]
14
+ # Email: The Email field is required.>
15
+ # {"Message"=>"One or several required parameters are missing or incorrect.
16
+ # An incorrect resource ID also raises this kind of error.",
17
+ # "Type"=>"param_error",
18
+ # "Id"=>"66936e92-3f21-4a35-b6cf-f1d17c2fb6e5",
19
+ # "Date"=>1409047252.0,
20
+ # "errors"=>{"Email"=>"The Email field is required."},
21
+ # "Code"=>"400",
22
+ # "Url"=>"/v2/sdk-unit-tests/users/natural"}
23
+ #
24
+ # * <MangoPay::ResponseError: Internal Server Error>
25
+ # {"Message"=>"Internal Server Error",
26
+ # "Type"=>"other",
27
+ # "Id"=>"7bdc5c6f-2000-4cd3-96f3-2a3fcb746f07",
28
+ # "Date"=>1409047251.0,
29
+ # "errors"=>nil,
30
+ # "Code"=>"500",
31
+ # "Url"=>"/v2/sdk-unit-tests/payins/3380640/refunds"}
32
+ class ResponseError < StandardError
33
+
34
+ attr_reader :request_url, :code, :details
35
+
36
+ def initialize(request_url, code, details)
37
+ @request_url = request_url
38
+ @code = code
39
+ @details = details
40
+ super(message) if message
41
+ end
42
+
43
+ def type
44
+ @details['Type'] if @details
45
+ end
46
+
47
+ def errors
48
+ @details['errors'] if @details
49
+ end
50
+
51
+ def message
52
+ return @message if @message
53
+ msg = @details ? @details['Message'] : ''
54
+ if errors && errors.is_a?(Hash)
55
+ msg += errors.sort.map { |k, v| "\n#{k}: #{v}" }.join
56
+ end
57
+ @message = msg || "#{@code} #{@details['error']}"
58
+ end
59
+
60
+ end
61
+ end
@@ -1,15 +1,15 @@
1
- require_relative '../../../lib/mangopay/util/enum'
2
-
3
- module MangoPay
4
-
5
- # Enumeration of sorting directions available for sorting API response results
6
- class SortDirection
7
- extend Enum
8
-
9
- # Ascending sort direction
10
- ASC = value 'ASC'
11
-
12
- # Descending sort direction
13
- DESC = value 'DESC'
14
- end
1
+ require_relative '../../../lib/mangopay/util/enum'
2
+
3
+ module MangoPay
4
+
5
+ # Enumeration of sorting directions available for sorting API response results
6
+ class SortDirection
7
+ extend Enum
8
+
9
+ # Ascending sort direction
10
+ ASC = value 'ASC'
11
+
12
+ # Descending sort direction
13
+ DESC = value 'DESC'
14
+ end
15
15
  end
@@ -1,13 +1,13 @@
1
- require_relative '../../../lib/mangopay/util/enum'
2
-
3
- module MangoPay
4
-
5
- # Available fields by which to sort API response results
6
- class SortField
7
- extend Enum
8
-
9
- CREATION_DATE = value 'CreationDate'
10
-
11
- DATE = value 'Date'
12
- end
1
+ require_relative '../../../lib/mangopay/util/enum'
2
+
3
+ module MangoPay
4
+
5
+ # Available fields by which to sort API response results
6
+ class SortField
7
+ extend Enum
8
+
9
+ CREATION_DATE = value 'CreationDate'
10
+
11
+ DATE = value 'Date'
12
+ end
13
13
  end
@@ -1,9 +1,9 @@
1
- require_relative 'jsonifier'
2
-
3
-
4
- class TemplateUrlOptions
5
- include MangoPay::Jsonifier
6
-
7
- # [String] URL to a SSL page
8
- attr_accessor :payline
1
+ require_relative 'jsonifier'
2
+
3
+
4
+ class TemplateUrlOptions
5
+ include MangoPay::Jsonifier
6
+
7
+ # [String] URL to a SSL page
8
+ attr_accessor :payline
9
9
  end
@@ -1,39 +1,39 @@
1
- module MangoPay
2
-
3
- # Top-level configuration details
4
- class Configuration
5
-
6
- # [true/false] True if the sandbox environment should be used
7
- attr_accessor :preproduction
8
-
9
- # [String] Root URL to use for requests
10
- attr_accessor :root_url
11
-
12
- # [String] Your client ID
13
- attr_accessor :client_id
14
-
15
- # [String] Your client passphrase
16
- attr_accessor :client_passphrase
17
-
18
- # [String] Path to directory in which to store authorization token
19
- # If nil, tokens will be stored in-memory.
20
- attr_accessor :temp_dir
21
-
22
- # [String] Path for logging file
23
- attr_accessor :log_dir
24
-
25
- # [Integer] Number of milliseconds after which to timeout requests
26
- attr_accessor :http_timeout
27
-
28
- def initialize
29
- self.preproduction = true
30
- self.http_timeout = 10_000
31
- end
32
-
33
- def api_version
34
- 'v2.01'
35
- end
36
-
37
- alias preproduction? preproduction
38
- end
1
+ module MangoPay
2
+
3
+ # Top-level configuration details
4
+ class Configuration
5
+
6
+ # [true/false] True if the sandbox environment should be used
7
+ attr_accessor :preproduction
8
+
9
+ # [String] Root URL to use for requests
10
+ attr_accessor :root_url
11
+
12
+ # [String] Your client ID
13
+ attr_accessor :client_id
14
+
15
+ # [String] Your client apiKey
16
+ attr_accessor :client_apiKey
17
+
18
+ # [String] Path to directory in which to store authorization token
19
+ # If nil, tokens will be stored in-memory.
20
+ attr_accessor :temp_dir
21
+
22
+ # [String] Path for logging file
23
+ attr_accessor :log_dir
24
+
25
+ # [Integer] Number of milliseconds after which to timeout requests
26
+ attr_accessor :http_timeout
27
+
28
+ def initialize
29
+ self.preproduction = true
30
+ self.http_timeout = 10_000
31
+ end
32
+
33
+ def api_version
34
+ 'v2.01'
35
+ end
36
+
37
+ alias preproduction? preproduction
38
+ end
39
39
  end
@@ -1,66 +1,66 @@
1
- require_relative 'common/log_provider'
2
- require_relative 'common/rate_limit_interval'
3
-
4
- module MangoPay
5
-
6
- # Holds environment-specific configuration and data.
7
- # Allows for multiple client handling and configuration
8
- # from within the same application.
9
- class Environment
10
- LOG = LogProvider.provide(self)
11
-
12
- # [Symbol] Its identification symbol
13
- attr_reader :id
14
-
15
- # [Configuration] Its MangoPay configuration details
16
- attr_accessor :configuration
17
-
18
- # [Hash] Counts of the requests sent to the API per time interval
19
- attr_accessor :rate_limit_count
20
-
21
- # [Hash] Number of remaining possible calls to be made per time interval
22
- attr_accessor :rate_limit_remaining
23
-
24
- # [Hash] UNIX times at which counts will be reset per time interval
25
- attr_accessor :rate_limit_reset
26
-
27
- def initialize(id)
28
- @id = id
29
- @rate_limit_count = {}
30
- @rate_limit_remaining = {}
31
- @rate_limit_reset = {}
32
- end
33
-
34
- # Updates the rate limit data based on headers from API.
35
- #
36
- # noinspection RubyResolve
37
- def update_rate_limits(rate_limits)
38
- rate_limits['x-ratelimit'].each.with_index do |count, index|
39
- @rate_limit_count[time_interval(index)] = count
40
- end
41
- rate_limits['x-ratelimit-remaining'].each.with_index do |remain, index|
42
- @rate_limit_remaining[time_interval(index)] = remain
43
- end
44
- rate_limits['x-ratelimit-reset'].each.with_index do |reset, index|
45
- @rate_limit_reset[time_interval(index)] = reset
46
- end
47
- end
48
-
49
- # Asserts the time interval corresponding to each index
50
- # of the values returned in API headers.
51
- def time_interval(index)
52
- case index
53
- when 0
54
- RateLimitInterval::FIFTEEN_MIN
55
- when 1
56
- RateLimitInterval::THIRTY_MIN
57
- when 2
58
- RateLimitInterval::HOUR
59
- when 3
60
- RateLimitInterval::DAY
61
- else
62
- LOG.warn 'Unexpected rate limit time interval count'
63
- end
64
- end
65
- end
1
+ require_relative 'common/log_provider'
2
+ require_relative 'common/rate_limit_interval'
3
+
4
+ module MangoPay
5
+
6
+ # Holds environment-specific configuration and data.
7
+ # Allows for multiple client handling and configuration
8
+ # from within the same application.
9
+ class Environment
10
+ LOG = LogProvider.provide(self)
11
+
12
+ # [Symbol] Its identification symbol
13
+ attr_reader :id
14
+
15
+ # [Configuration] Its MangoPay configuration details
16
+ attr_accessor :configuration
17
+
18
+ # [Hash] Counts of the requests sent to the API per time interval
19
+ attr_accessor :rate_limit_count
20
+
21
+ # [Hash] Number of remaining possible calls to be made per time interval
22
+ attr_accessor :rate_limit_remaining
23
+
24
+ # [Hash] UNIX times at which counts will be reset per time interval
25
+ attr_accessor :rate_limit_reset
26
+
27
+ def initialize(id)
28
+ @id = id
29
+ @rate_limit_count = {}
30
+ @rate_limit_remaining = {}
31
+ @rate_limit_reset = {}
32
+ end
33
+
34
+ # Updates the rate limit data based on headers from API.
35
+ #
36
+ # noinspection RubyResolve
37
+ def update_rate_limits(rate_limits)
38
+ rate_limits['x-ratelimit'].each.with_index do |count, index|
39
+ @rate_limit_count[time_interval(index)] = count
40
+ end
41
+ rate_limits['x-ratelimit-remaining'].each.with_index do |remain, index|
42
+ @rate_limit_remaining[time_interval(index)] = remain
43
+ end
44
+ rate_limits['x-ratelimit-reset'].each.with_index do |reset, index|
45
+ @rate_limit_reset[time_interval(index)] = reset
46
+ end
47
+ end
48
+
49
+ # Asserts the time interval corresponding to each index
50
+ # of the values returned in API headers.
51
+ def time_interval(index)
52
+ case index
53
+ when 0
54
+ RateLimitInterval::FIFTEEN_MIN
55
+ when 1
56
+ RateLimitInterval::THIRTY_MIN
57
+ when 2
58
+ RateLimitInterval::HOUR
59
+ when 3
60
+ RateLimitInterval::DAY
61
+ else
62
+ LOG.warn 'Unexpected rate limit time interval count'
63
+ end
64
+ end
65
+ end
66
66
  end