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,9 +1,9 @@
1
- #!/usr/bin/env ruby
2
-
3
- irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
4
-
5
- libs = ' -r irb/completion'
6
- libs << " -r #{File.dirname(__FILE__) + '/../lib/mangopay'}"
7
-
8
- puts 'Loading MangoPay gem'
9
- exec "#{irb} #{libs}"
1
+ #!/usr/bin/env ruby
2
+
3
+ irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
4
+
5
+ libs = ' -r irb/completion'
6
+ libs << " -r #{File.dirname(__FILE__) + '/../lib/mangopay'}"
7
+
8
+ puts 'Loading MangoPay gem'
9
+ exec "#{irb} #{libs}"
@@ -1,133 +1,133 @@
1
- require_relative '../lib/mangopay/common/log_provider'
2
- require_relative 'mangopay/environment'
3
- require_relative 'mangopay/configuration'
4
- require_relative 'mangopay/model/model'
5
- require_relative 'mangopay/api/api'
6
-
7
- # Holds top-level configuration.
8
- module MangoPay
9
- LOG = LogProvider.provide(self)
10
-
11
- VERSION = '4.0.0'.freeze
12
-
13
- SANDBOX_API_URL = 'https://api.sandbox.mangopay.com'.freeze
14
- MAIN_API_URL = 'https://api.mangopay.com'.freeze
15
-
16
- # ID of the environment in which to run MangoPay operations
17
- @global_env_id = :default
18
- # Mapping of MangoPay environments by ID
19
- @environments = {
20
- default: MangoPay::Environment.new(:default)
21
- }
22
- # Mapping of thread object IDs to MangoPay environment IDs
23
- @env_id = {}
24
-
25
- class << self
26
-
27
- # Allows to specify environment in which to run MangoPay operations.
28
- # All subsequent threads will automatically run in that environment.
29
- #
30
- # @param +env_id+ ID of the required environment
31
- #
32
- # noinspection RubyResolve
33
- def use_environment(env_id)
34
- @global_env_id = env_id || :default
35
- unless @environments[@global_env_id]
36
- LOG.debug 'Creating new environment :{}', env_id
37
- env = MangoPay::Environment.new(@global_env_id)
38
- @environments[@global_env_id] = env
39
- end
40
- LOG.info 'Using environment :{}', env_id
41
- put_thread_local_environment
42
- end
43
-
44
- # Sets MangoPay to run under the default environment.
45
- def use_default
46
- use_environment :default
47
- end
48
-
49
- # Returns the environment currently being used.
50
- #
51
- # noinspection RubyResolve
52
- def environment
53
- @environments[thread_local_env_id]
54
- end
55
-
56
- private
57
-
58
- # Returns the ID of the environment to be used for current thread.
59
- #
60
- # noinspection RubyResolve
61
- def thread_local_env_id
62
- thread_id = Thread.current.object_id
63
- @env_id[thread_id] || put_thread_local_environment
64
- end
65
-
66
- # Saves currently-set global environment as the one to be used
67
- # for current thread.
68
- #
69
- # noinspection RubyResolve
70
- def put_thread_local_environment
71
- thread = Thread.current
72
- thread_id = thread.object_id
73
- LOG.debug 'Mapping thread {} to environment :{}',
74
- thread_id, @global_env_id
75
- initiate_mapping_removal(thread) unless @env_id[thread_id]
76
- @env_id[thread_id] = @global_env_id
77
- end
78
-
79
- # Starts another thread which will delete current thread's
80
- # environment hash entry as soon as current thread terminates.
81
- #
82
- # noinspection RubyResolve
83
- def initiate_mapping_removal(thread)
84
- thread_id = thread.object_id
85
- LOG.debug 'Initiating removal task for thread-to-environment mapping '\
86
- '{ {} => :{} }', thread_id, @global_env_id
87
- Thread.new do
88
- thread.join
89
- deleted = @env_id.delete thread_id
90
- LOG.debug 'Removed thread-to-environment mapping '\
91
- '{ {} => :{} }', thread_id, deleted
92
- end
93
- end
94
-
95
- public
96
-
97
- # Provides MangoPay configuration object for current environment.
98
- #
99
- # noinspection RubyResolve
100
- def configuration
101
- env = environment
102
- env.configuration ||
103
- raise("MangoPay.configure() was not called for environment #{env.id}")
104
- end
105
-
106
- # Allows configuration of the current MangoPay environment.
107
- # Yields configuration object to a provided block.
108
- #
109
- # noinspection RubyResolve
110
- def configure
111
- env = environment
112
- LOG.info 'Configuring environment :{}', env.id
113
- config = env.configuration || MangoPay::Configuration.new
114
- yield config
115
- validate config
116
- LOG.info 'Successfully configured environment :{} for client {}',
117
- env.id, config.client_id
118
- env.configuration = config
119
- end
120
-
121
- private
122
-
123
- # Validates a provided MangoPay configuration.
124
- def validate(config)
125
- cause_message = 'You must specify your client ID'
126
- raise cause_message unless config.client_id
127
- cause_message = 'You must specify your client passphrase'
128
- raise cause_message unless config.client_passphrase
129
- config.root_url = config.preproduction? ? SANDBOX_API_URL : MAIN_API_URL\
130
- unless config.root_url
131
- end
132
- end
1
+ require_relative '../lib/mangopay/common/log_provider'
2
+ require_relative 'mangopay/environment'
3
+ require_relative 'mangopay/configuration'
4
+ require_relative 'mangopay/model/model'
5
+ require_relative 'mangopay/api/api'
6
+
7
+ # Holds top-level configuration.
8
+ module MangoPay
9
+ LOG = LogProvider.provide(self)
10
+
11
+ VERSION = '4.0.1'.freeze
12
+
13
+ SANDBOX_API_URL = 'https://api.sandbox.mangopay.com'.freeze
14
+ MAIN_API_URL = 'https://api.mangopay.com'.freeze
15
+
16
+ # ID of the environment in which to run MangoPay operations
17
+ @global_env_id = :default
18
+ # Mapping of MangoPay environments by ID
19
+ @environments = {
20
+ default: MangoPay::Environment.new(:default)
21
+ }
22
+ # Mapping of thread object IDs to MangoPay environment IDs
23
+ @env_id = {}
24
+
25
+ class << self
26
+
27
+ # Allows to specify environment in which to run MangoPay operations.
28
+ # All subsequent threads will automatically run in that environment.
29
+ #
30
+ # @param +env_id+ ID of the required environment
31
+ #
32
+ # noinspection RubyResolve
33
+ def use_environment(env_id)
34
+ @global_env_id = env_id || :default
35
+ unless @environments[@global_env_id]
36
+ LOG.debug 'Creating new environment :{}', env_id
37
+ env = MangoPay::Environment.new(@global_env_id)
38
+ @environments[@global_env_id] = env
39
+ end
40
+ LOG.info 'Using environment :{}', env_id
41
+ put_thread_local_environment
42
+ end
43
+
44
+ # Sets MangoPay to run under the default environment.
45
+ def use_default
46
+ use_environment :default
47
+ end
48
+
49
+ # Returns the environment currently being used.
50
+ #
51
+ # noinspection RubyResolve
52
+ def environment
53
+ @environments[thread_local_env_id]
54
+ end
55
+
56
+ private
57
+
58
+ # Returns the ID of the environment to be used for current thread.
59
+ #
60
+ # noinspection RubyResolve
61
+ def thread_local_env_id
62
+ thread_id = Thread.current.object_id
63
+ @env_id[thread_id] || put_thread_local_environment
64
+ end
65
+
66
+ # Saves currently-set global environment as the one to be used
67
+ # for current thread.
68
+ #
69
+ # noinspection RubyResolve
70
+ def put_thread_local_environment
71
+ thread = Thread.current
72
+ thread_id = thread.object_id
73
+ LOG.debug 'Mapping thread {} to environment :{}',
74
+ thread_id, @global_env_id
75
+ initiate_mapping_removal(thread) unless @env_id[thread_id]
76
+ @env_id[thread_id] = @global_env_id
77
+ end
78
+
79
+ # Starts another thread which will delete current thread's
80
+ # environment hash entry as soon as current thread terminates.
81
+ #
82
+ # noinspection RubyResolve
83
+ def initiate_mapping_removal(thread)
84
+ thread_id = thread.object_id
85
+ LOG.debug 'Initiating removal task for thread-to-environment mapping '\
86
+ '{ {} => :{} }', thread_id, @global_env_id
87
+ Thread.new do
88
+ thread.join
89
+ deleted = @env_id.delete thread_id
90
+ LOG.debug 'Removed thread-to-environment mapping '\
91
+ '{ {} => :{} }', thread_id, deleted
92
+ end
93
+ end
94
+
95
+ public
96
+
97
+ # Provides MangoPay configuration object for current environment.
98
+ #
99
+ # noinspection RubyResolve
100
+ def configuration
101
+ env = environment
102
+ env.configuration ||
103
+ raise("MangoPay.configure() was not called for environment #{env.id}")
104
+ end
105
+
106
+ # Allows configuration of the current MangoPay environment.
107
+ # Yields configuration object to a provided block.
108
+ #
109
+ # noinspection RubyResolve
110
+ def configure
111
+ env = environment
112
+ LOG.info 'Configuring environment :{}', env.id
113
+ config = env.configuration || MangoPay::Configuration.new
114
+ yield config
115
+ validate config
116
+ LOG.info 'Successfully configured environment :{} for client {}',
117
+ env.id, config.client_id
118
+ env.configuration = config
119
+ end
120
+
121
+ private
122
+
123
+ # Validates a provided MangoPay configuration.
124
+ def validate(config)
125
+ cause_message = 'You must specify your client ID'
126
+ raise cause_message unless config.client_id
127
+ cause_message = 'You must specify your client APIKey'
128
+ raise cause_message unless config.client_apiKey
129
+ config.root_url = config.preproduction? ? SANDBOX_API_URL : MAIN_API_URL\
130
+ unless config.root_url
131
+ end
132
+ end
133
133
  end
@@ -1,9 +1,9 @@
1
- require_relative 'http_client'
2
- require_relative 'service/oauth_tokens'
3
- require_relative 'service/users'
4
- require_relative 'auth_token_manager'
5
- require_relative '../common/response_error'
6
-
7
- # Module for service classes
8
- module MangoApi
1
+ require_relative 'http_client'
2
+ require_relative 'service/oauth_tokens'
3
+ require_relative 'service/users'
4
+ require_relative 'auth_token_manager'
5
+ require_relative '../common/response_error'
6
+
7
+ # Module for service classes
8
+ module MangoApi
9
9
  end
@@ -1,137 +1,161 @@
1
- require 'forwardable'
2
-
3
- module MangoApi
4
-
5
- # Declares API method URLs.
6
- class ApiMethods
7
- class << self
8
- extend Forwardable
9
-
10
- @hash = {
11
- create_token: %w[POST oauth/token],
12
-
13
- create_user: %w[POST %(users/#{_param1.person_type.to_s.downcase})],
14
- update_user: %w[PUT %(users/#{_param1}/#{_param2})],
15
- get_user: %w[GET %(users/#{_param1})],
16
- get_users: %w[GET users],
17
-
18
- create_account: %w[POST %(users/#{_param1.user_id}/bankaccounts/#{_param1.type.to_s.downcase})],
19
- deactivate_account: %w[PUT %(users/#{_param1}/bankaccounts/#{_param2})],
20
- get_account: %w[GET %(users/#{_param1}/bankaccounts/#{_param2})],
21
- get_accounts: %w[GET %(users/#{_param1}/bankaccounts)],
22
-
23
- create_wallet: %w[POST wallets],
24
- update_wallet: %w[PUT %(wallets/#{_param1.id})],
25
- get_wallet: %w[GET %(wallets/#{_param1})],
26
- get_users_wallets: %w[GET %(users/#{_param1}/wallets)],
27
-
28
- update_client: %w[PUT clients],
29
- get_client: %w[GET clients],
30
- upload_client_logo: %w[PUT clients/logo],
31
-
32
- get_client_wallet: %w[GET %(clients/wallets/#{_param1.to_s}/#{_param2.to_s})],
33
- get_client_wallets: %w[GET clients/wallets],
34
- get_client_wallets_funds_type: %w[GET %(clients/wallets/#{_param1.to_s})],
35
-
36
- get_users_e_money: %w[GET %(users/#{_param1}/emoney)],
37
-
38
- create_transfer: %w[POST transfers],
39
- get_transfer: %w[POST %(transfers/#{_param1})],
40
-
41
- create_card_web_pay_in: %w[POST payins/card/web],
42
- create_card_direct_pay_in: %w[POST payins/card/direct],
43
- create_card_pre_authorized_pay_in: %w[POST payins/preauthorized/direct],
44
- create_bank_wire_direct_pay_in: %w[POST payins/bankwire/direct],
45
- create_client_bank_wire_direct_pay_in: %w[POST clients/payins/bankwire/direct],
46
- create_direct_debit_web_pay_in: %w[POST payins/directdebit/web],
47
- create_direct_debit_direct_pay_in: %w[POST payins/directdebit/direct],
48
- get_pay_in: %w[GET %(payins/#{_param1})],
49
-
50
- get_extended_card_view: %w[GET %(payins/card/web/#{_param1}/extended)],
51
-
52
- create_card_registration: %w[POST cardregistrations],
53
- complete_card_registration: %w[PUT %(cardregistrations/#{_param1})],
54
- get_card_registration: %w[GET %(cardregistrations/#{_param1})],
55
-
56
- get_card: %w[GET %(cards/#{_param1})],
57
- get_users_cards: %w[GET %(users/#{_param1}/cards)],
58
- get_cards_by_fingerprint: %w[GET %(cards/fingerprints/#{_param1})],
59
- deactivate_card: %w[PUT %(cards/#{_param1})],
60
-
61
- get_users_transactions: %w[GET %(users/#{_param1}/transactions)],
62
- get_wallets_transactions: %w[GET %(wallets/#{_param1}/transactions)],
63
- get_disputes_transactions: %w[GET %(disputes/#{_param1}/transactions)],
64
- get_clients_transactions: %w[GET %(clients/transactions)],
65
- get_client_wallets_transactions: %w[GET %(clients/wallets/#{_param1.to_s}/#{_param2.to_s}/transactions)],
66
- get_pre_authorizations_transactions: %w[GET %(preauthorizations/#{_param1}/transactions)],
67
-
68
- create_pre_authorization: %w[POST preauthorizations/card/direct],
69
- get_pre_authorization: %w[GET %(preauthorizations/#{_param1})],
70
- cancel_pre_authorization: %w[PUT %(preauthorizations/#{_param1})],
71
-
72
- create_mandate: %w[POST mandates/directdebit/web],
73
- get_mandate: %w[GET %(mandates/#{_param1})],
74
- cancel_mandate: %w[PUT %(mandates/#{_param1}/cancel)],
75
- get_mandates: %w[GET mandates],
76
- get_users_mandates: %w[GET %(users/#{_param1}/mandates)],
77
- get_accounts_mandates: %w[GET %(users/#{_param1}/bankaccounts/#{_param2}/mandates)],
78
-
79
- create_pay_out: %w[POST payouts/bankwire],
80
- get_pay_out: %w[GET %(payouts/#{_param1})],
81
-
82
- create_kyc_document: %w[POST %(users/#{_param1}/kyc/documents)],
83
- upload_kyc_document_page: %w[POST %(users/#{_param1}/kyc/documents/#{_param2}/pages)],
84
- submit_kyc_document: %w[PUT %(users/#{_param1}/kyc/documents/#{_param2})],
85
- get_users_kyc_documents: %w[GET %(users/#{_param1}/kyc/documents)],
86
- get_kyc_documents: %w[GET kyc/documents],
87
- consult_kyc_document: %w[POST %(kyc/documents/#{_param1}/consult)],
88
-
89
- create_ubo_declaration: %w[POST %(users/legal/#{_param1}/ubodeclarations)],
90
- update_ubo_declaration: %w[PUT %(ubodeclarations/#{_param1})],
91
- submit_ubo_declaration: %w[PUT %(ubodeclarations/#{_param1})],
92
-
93
- create_hook: %w[POST hooks],
94
- update_hook: %w[PUT %(hooks/#{_param1})],
95
- get_hook: %w[GET %(hooks/#{_param1})],
96
- get_hooks: %w[GET hooks],
97
-
98
- get_events: %w[GET events],
99
-
100
- create_pay_in_refund: %w[POST %(payins/#{_param1}/refunds)],
101
- create_transfer_refund: %w[POST %(transfers/#{_param1}/refunds)],
102
-
103
- update_dispute: %w[PUT %(disputes/#{_param1})],
104
- close_dispute: %w[PUT %(disputes/#{_param1}/close)],
105
- submit_dispute: %w[PUT %(disputes/#{_param1}/submit)],
106
- resubmit_dispute: %w[PUT %(disputes/#{_param1}/submit)],
107
- get_dispute: %w[GET %(disputes/#{_param1})],
108
- get_users_disputes: %w[GET %(users/#{_param1}/disputes)],
109
- get_wallets_disputes: %w[GET %(wallets/#{_param1}/disputes)],
110
- get_disputes_pending_settlement: %w[GET disputes/pendingsettlement],
111
- get_disputes: %w[GET disputes],
112
-
113
- create_dispute_document: %w[POST %(disputes/#{_param1}/documents)],
114
- upload_dispute_document_page: %w[POST %(disputes/#{_param1}/documents/#{_param2}/pages)],
115
- submit_dispute_document: %w[PUT %(disputes/#{_param1}/documents/#{_param2})],
116
- get_dispute_document: %w[GET %(dispute-documents/#{_param1})],
117
- get_disputes_documents: %w[GET %(disputes/#{_param1}/documents)],
118
- get_dispute_documents: %w[GET dispute-documents],
119
- consult_dispute_document: %w[POST %(dispute-documents/#{_param1}/consult)],
120
-
121
- get_repudiation: %w[GET %(repudiations/#{_param1})],
122
-
123
- create_settlement_transfer: %w[POST %(repudiations/#{_param1}/settlementtransfer)],
124
- get_settlement_transfer: %w[GET %(settlements/#{_param1})],
125
-
126
- create_transaction_report: %w[POST reports/transactions],
127
- create_wallet_report: %w[POST reports/wallets],
128
- get_report: %w[GET %(reports/#{_param1})],
129
- get_reports: %w[GET reports],
130
-
131
- replicate_response: %w[GET %(responses/#{_param1})]
132
- }
133
-
134
- def_delegators @hash, :[]
135
- end
136
- end
1
+ require 'forwardable'
2
+
3
+ module MangoApi
4
+
5
+ # Declares API method URLs.
6
+ class ApiMethods
7
+ class << self
8
+ extend Forwardable
9
+
10
+ @hash = {
11
+ create_token: %w[POST oauth/token],
12
+
13
+ create_user: %w[POST %(users/#{_params[0].person_type.to_s.downcase})],
14
+ update_user: %w[PUT %(users/#{_params[0]}/#{_params[1]})],
15
+ get_user: %w[GET %(users/#{_params[0]})],
16
+ get_users: %w[GET users],
17
+
18
+ create_account: %w[POST %(users/#{_params[0].user_id}/bankaccounts/#{_params[0].type.to_s.downcase})],
19
+ deactivate_account: %w[PUT %(users/#{_params[0]}/bankaccounts/#{_params[1]})],
20
+ get_account: %w[GET %(users/#{_params[0]}/bankaccounts/#{_params[1]})],
21
+ get_accounts: %w[GET %(users/#{_params[0]}/bankaccounts)],
22
+
23
+ create_wallet: %w[POST wallets],
24
+ update_wallet: %w[PUT %(wallets/#{_params[0].id})],
25
+ get_wallet: %w[GET %(wallets/#{_params[0]})],
26
+ get_users_wallets: %w[GET %(users/#{_params[0]}/wallets)],
27
+
28
+ update_client: %w[PUT clients],
29
+ get_client: %w[GET clients],
30
+ upload_client_logo: %w[PUT clients/logo],
31
+
32
+ get_client_wallet: %w[GET %(clients/wallets/#{_params[0].to_s}/#{_params[1].to_s})],
33
+ get_client_wallets: %w[GET clients/wallets],
34
+ get_client_wallets_funds_type: %w[GET %(clients/wallets/#{_params[0].to_s})],
35
+
36
+ get_users_e_money_year: %w[GET %(users/#{_params[0]}/emoney/#{_params[1]})],
37
+ get_users_e_money_month: %w[GET %(users/#{_params[0]}/emoney/#{_params[1]}/#{_params[2]})],
38
+
39
+ create_transfer: %w[POST transfers],
40
+ get_transfer: %w[POST %(transfers/#{_params[0]})],
41
+
42
+ create_card_web_pay_in: %w[POST payins/card/web],
43
+ create_card_direct_pay_in: %w[POST payins/card/direct],
44
+ create_card_pre_authorized_pay_in: %w[POST payins/preauthorized/direct],
45
+ create_bank_wire_direct_pay_in: %w[POST payins/bankwire/direct],
46
+ create_client_bank_wire_direct_pay_in: %w[POST clients/payins/bankwire/direct],
47
+ create_direct_debit_web_pay_in: %w[POST payins/directdebit/web],
48
+ create_direct_debit_direct_pay_in: %w[POST payins/directdebit/direct],
49
+ create_paypal_web_pay_in: %w[POST payins/paypal/web],
50
+ create_apple_pay_pay_in: %w[POST payins/applepay/direct],
51
+ create_google_pay_pay_in: %[POST payins/googlepay/direct],
52
+ get_pay_in: %w[GET %(payins/#{_params[0]})],
53
+ get_payins_refunds: %w[GET %(payins/#{_params[0]}/refunds)],
54
+
55
+ get_extended_card_view: %w[GET %(payins/card/web/#{_params[0]}/extended)],
56
+
57
+ create_card_registration: %w[POST cardregistrations],
58
+ complete_card_registration: %w[PUT %(cardregistrations/#{_params[0]})],
59
+ get_card_registration: %w[GET %(cardregistrations/#{_params[0]})],
60
+
61
+ get_card: %w[GET %(cards/#{_params[0]})],
62
+ get_users_cards: %w[GET %(users/#{_params[0]}/cards)],
63
+ get_cards_by_fingerprint: %w[GET %(cards/fingerprints/#{_params[0]})],
64
+ deactivate_card: %w[PUT %(cards/#{_params[0]})],
65
+ get_preauthorizations_for_card: %w[GET %(cards/#{_params[0]}/preauthorizations)],
66
+
67
+ get_users_transactions: %w[GET %(users/#{_params[0]}/transactions)],
68
+ get_wallets_transactions: %w[GET %(wallets/#{_params[0]}/transactions)],
69
+ get_disputes_transactions: %w[GET %(disputes/#{_params[0]}/transactions)],
70
+ get_clients_transactions: %w[GET %(clients/transactions)],
71
+ get_client_wallets_transactions: %w[GET %(clients/wallets/#{_params[0].to_s}/#{_params[1].to_s}/transactions)],
72
+ get_pre_authorizations_transactions: %w[GET %(preauthorizations/#{_params[0]}/transactions)],
73
+ get_cards_transactions: %w[GET %(cards/#{_params[0]}/transactions)],
74
+ get_bank_accounts_transactions: %w[GET %(bankaccounts/#{_params[0]}/transactions)],
75
+ get_mandates_transactions: %w[GET %(mandates/#{_params[0]}/transactions)],
76
+
77
+ create_pre_authorization: %w[POST preauthorizations/card/direct],
78
+ get_pre_authorization: %w[GET %(preauthorizations/#{_params[0]})],
79
+ cancel_pre_authorization: %w[PUT %(preauthorizations/#{_params[0]})],
80
+ get_users_pre_authorizations: %w[GET %(users/#{_params[0]}/preauthorizations)],
81
+
82
+ create_mandate: %w[POST mandates/directdebit/web],
83
+ get_mandate: %w[GET %(mandates/#{_params[0]})],
84
+ cancel_mandate: %w[PUT %(mandates/#{_params[0]}/cancel)],
85
+ get_mandates: %w[GET mandates],
86
+ get_users_mandates: %w[GET %(users/#{_params[0]}/mandates)],
87
+ get_accounts_mandates: %w[GET %(users/#{_params[0]}/bankaccounts/#{_params[1]}/mandates)],
88
+
89
+ create_pay_out: %w[POST payouts/bankwire],
90
+ get_pay_out: %w[GET %(payouts/#{_params[0]})],
91
+
92
+ create_kyc_document: %w[POST %(users/#{_params[0]}/kyc/documents)],
93
+ upload_kyc_document_page: %w[POST %(users/#{_params[0]}/kyc/documents/#{_params[1]}/pages)],
94
+ submit_kyc_document: %w[PUT %(users/#{_params[0]}/kyc/documents/#{_params[1]})],
95
+ get_users_kyc_documents: %w[GET %(users/#{_params[0]}/kyc/documents)],
96
+ get_kyc_documents: %w[GET kyc/documents],
97
+ consult_kyc_document: %w[POST %(kyc/documents/#{_params[0]}/consult)],
98
+
99
+ all_ubo_declaration: %w[GET %(users/#{_params[0]}/kyc/ubodeclarations)],
100
+ create_ubo_declaration: %w[POST %(users/#{_params[0]}/kyc/ubodeclarations)],
101
+ get_ubo_declaration: %w[GET %(users/#{_params[0]}/kyc/ubodeclarations/#{_params[1]})],
102
+ get_ubo_declaration_by_id: %w[GET %(kyc/ubodeclarations/#{_params[0]})],
103
+ submit_ubo_declaration: %w[PUT %(users/#{_params[0]}/kyc/ubodeclarations/#{_params[1]})],
104
+
105
+ create_ubo: %w[POST %(users/#{_params[0]}/kyc/ubodeclarations/#{_params[1]}/ubos)],
106
+ update_ubo: %w[PUT %(users/#{_params[0]}/kyc/ubodeclarations/#{_params[1]}/ubos/#{_params[2]})],
107
+ get_ubo: %w[GET %(users/#{_params[0]}/kyc/ubodeclarations/#{_params[1]}/ubos/#{_params[2]})],
108
+
109
+ create_hook: %w[POST hooks],
110
+ update_hook: %w[PUT %(hooks/#{_params[0]})],
111
+ get_hook: %w[GET %(hooks/#{_params[0]})],
112
+ get_hooks: %w[GET hooks],
113
+
114
+ get_events: %w[GET events],
115
+
116
+ create_pay_in_refund: %w[POST %(payins/#{_params[0]}/refunds)],
117
+ create_transfer_refund: %w[POST %(transfers/#{_params[0]}/refunds)],
118
+ get_payouts_refunds: %w[GET %(payouts/#{_params[0]}/refunds)],
119
+ get_transfers_refunds: %w[GET %(transfers/#{_params[0]}/refunds)],
120
+
121
+ update_dispute: %w[PUT %(disputes/#{_params[0]})],
122
+ close_dispute: %w[PUT %(disputes/#{_params[0]}/close)],
123
+ submit_dispute: %w[PUT %(disputes/#{_params[0]}/submit)],
124
+ resubmit_dispute: %w[PUT %(disputes/#{_params[0]}/submit)],
125
+ get_dispute: %w[GET %(disputes/#{_params[0]})],
126
+ get_users_disputes: %w[GET %(users/#{_params[0]}/disputes)],
127
+ get_wallets_disputes: %w[GET %(wallets/#{_params[0]}/disputes)],
128
+ get_disputes_pending_settlement: %w[GET disputes/pendingsettlement],
129
+ get_disputes: %w[GET disputes],
130
+
131
+ create_dispute_document: %w[POST %(disputes/#{_params[0]}/documents)],
132
+ upload_dispute_document_page: %w[POST %(disputes/#{_params[0]}/documents/#{_params[1]}/pages)],
133
+ submit_dispute_document: %w[PUT %(disputes/#{_params[0]}/documents/#{_params[1]})],
134
+ get_dispute_document: %w[GET %(dispute-documents/#{_params[0]})],
135
+ get_disputes_documents: %w[GET %(disputes/#{_params[0]}/documents)],
136
+ get_dispute_documents: %w[GET dispute-documents],
137
+ consult_dispute_document: %w[POST %(dispute-documents/#{_params[0]}/consult)],
138
+
139
+ get_repudiation: %w[GET %(repudiations/#{_params[0]})],
140
+ get_repudiations_refunds: %w[GET %(repudiations/#{_params[0]}/refunds)],
141
+
142
+ create_settlement_transfer: %w[POST %(repudiations/#{_params[0]}/settlementtransfer)],
143
+ get_settlement_transfer: %w[GET %(settlements/#{_params[0]})],
144
+
145
+ create_transaction_report: %w[POST reports/transactions],
146
+ create_wallet_report: %w[POST reports/wallets],
147
+ get_report: %w[GET %(reports/#{_params[0]})],
148
+ get_reports: %w[GET reports],
149
+
150
+ replicate_response: %w[GET %(responses/#{_params[0]})],
151
+
152
+ banking_alias_create_iban: %w[POST %(wallets/#{_params[0]}/bankingaliases/iban)],
153
+ banking_alias_all: %w[GET %(wallets/#{_params[0]}/bankingaliases)],
154
+ banking_alias_get: %w[GET %(bankingaliases/#{_params[0]})],
155
+ banking_alias_save: %w[PUT %(bankingaliases/#{_params[0]})]
156
+ }
157
+
158
+ def_delegators @hash, :[]
159
+ end
160
+ end
137
161
  end