mangopay-v4 4.0.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 (214) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +30 -0
  3. data/.rspec +4 -0
  4. data/.rubocop.yml +2 -0
  5. data/.travis.yml +13 -0
  6. data/Gemfile +2 -0
  7. data/LICENSE +20 -0
  8. data/README.md +380 -0
  9. data/bin/mangopay +9 -0
  10. data/lib/mangopay.rb +133 -0
  11. data/lib/mangopay/api/api.rb +9 -0
  12. data/lib/mangopay/api/api_methods.rb +137 -0
  13. data/lib/mangopay/api/auth_token_manager.rb +173 -0
  14. data/lib/mangopay/api/http_client.rb +325 -0
  15. data/lib/mangopay/api/service/bank_accounts.rb +146 -0
  16. data/lib/mangopay/api/service/cards.rb +152 -0
  17. data/lib/mangopay/api/service/client_wallets.rb +89 -0
  18. data/lib/mangopay/api/service/clients.rb +68 -0
  19. data/lib/mangopay/api/service/dispute_documents.rb +158 -0
  20. data/lib/mangopay/api/service/disputes.rb +187 -0
  21. data/lib/mangopay/api/service/e_money.rb +42 -0
  22. data/lib/mangopay/api/service/events.rb +47 -0
  23. data/lib/mangopay/api/service/hooks.rb +93 -0
  24. data/lib/mangopay/api/service/kyc_documents.rb +153 -0
  25. data/lib/mangopay/api/service/mandates.rb +142 -0
  26. data/lib/mangopay/api/service/oauth_tokens.rb +25 -0
  27. data/lib/mangopay/api/service/pay_ins.rb +260 -0
  28. data/lib/mangopay/api/service/pay_outs.rb +54 -0
  29. data/lib/mangopay/api/service/pre_authorizations.rb +69 -0
  30. data/lib/mangopay/api/service/refunds.rb +62 -0
  31. data/lib/mangopay/api/service/reports.rb +151 -0
  32. data/lib/mangopay/api/service/repudiations.rb +32 -0
  33. data/lib/mangopay/api/service/responses.rb +102 -0
  34. data/lib/mangopay/api/service/settlement_transfers.rb +55 -0
  35. data/lib/mangopay/api/service/transactions.rb +183 -0
  36. data/lib/mangopay/api/service/transfers.rb +54 -0
  37. data/lib/mangopay/api/service/ubo_declarations.rb +70 -0
  38. data/lib/mangopay/api/service/users.rb +163 -0
  39. data/lib/mangopay/api/service/wallets.rb +99 -0
  40. data/lib/mangopay/api/uri_provider.rb +35 -0
  41. data/lib/mangopay/common/json_tag_converter.rb +68 -0
  42. data/lib/mangopay/common/jsonifier.rb +249 -0
  43. data/lib/mangopay/common/log_provider.rb +34 -0
  44. data/lib/mangopay/common/rate_limit_interval.rb +17 -0
  45. data/lib/mangopay/common/read_only_fields.rb +27 -0
  46. data/lib/mangopay/common/response_error.rb +61 -0
  47. data/lib/mangopay/common/sort_direction.rb +15 -0
  48. data/lib/mangopay/common/sort_field.rb +13 -0
  49. data/lib/mangopay/common/template_url_options.rb +9 -0
  50. data/lib/mangopay/configuration.rb +39 -0
  51. data/lib/mangopay/environment.rb +66 -0
  52. data/lib/mangopay/model/address.rb +27 -0
  53. data/lib/mangopay/model/declared_ubo.rb +21 -0
  54. data/lib/mangopay/model/dispute_reason.rb +15 -0
  55. data/lib/mangopay/model/document_page_consult.rb +15 -0
  56. data/lib/mangopay/model/e_money.rb +18 -0
  57. data/lib/mangopay/model/entity/account/bank_account.rb +26 -0
  58. data/lib/mangopay/model/entity/account/ca_bank_account.rb +27 -0
  59. data/lib/mangopay/model/entity/account/gb_bank_account.rb +21 -0
  60. data/lib/mangopay/model/entity/account/iban_bank_account.rb +21 -0
  61. data/lib/mangopay/model/entity/account/other_bank_account.rb +24 -0
  62. data/lib/mangopay/model/entity/account/us_bank_account.rb +24 -0
  63. data/lib/mangopay/model/entity/card.rb +45 -0
  64. data/lib/mangopay/model/entity/card_registration.rb +43 -0
  65. data/lib/mangopay/model/entity/client.rb +63 -0
  66. data/lib/mangopay/model/entity/client_wallet.rb +23 -0
  67. data/lib/mangopay/model/entity/dispute.rb +50 -0
  68. data/lib/mangopay/model/entity/dispute_document.rb +29 -0
  69. data/lib/mangopay/model/entity/entity_base.rb +18 -0
  70. data/lib/mangopay/model/entity/hook.rb +26 -0
  71. data/lib/mangopay/model/entity/kyc_document.rb +28 -0
  72. data/lib/mangopay/model/entity/mandate.rb +51 -0
  73. data/lib/mangopay/model/entity/pay_in/bank_wire_direct_pay_in.rb +22 -0
  74. data/lib/mangopay/model/entity/pay_in/card_direct_pay_in.rb +33 -0
  75. data/lib/mangopay/model/entity/pay_in/card_pre_authorized_pay_in.rb +13 -0
  76. data/lib/mangopay/model/entity/pay_in/card_web_pay_in.rb +40 -0
  77. data/lib/mangopay/model/entity/pay_in/direct_debit_direct_pay_in.rb +23 -0
  78. data/lib/mangopay/model/entity/pay_in/direct_debit_web_pay_in.rb +38 -0
  79. data/lib/mangopay/model/entity/pay_in/pay_in.rb +16 -0
  80. data/lib/mangopay/model/entity/pay_out.rb +22 -0
  81. data/lib/mangopay/model/entity/pre_authorization.rb +68 -0
  82. data/lib/mangopay/model/entity/refund.rb +18 -0
  83. data/lib/mangopay/model/entity/report.rb +51 -0
  84. data/lib/mangopay/model/entity/repudiation.rb +18 -0
  85. data/lib/mangopay/model/entity/settlement_transfer.rb +17 -0
  86. data/lib/mangopay/model/entity/transaction.rb +52 -0
  87. data/lib/mangopay/model/entity/transfer.rb +13 -0
  88. data/lib/mangopay/model/entity/ubo_declaration.rb +32 -0
  89. data/lib/mangopay/model/entity/user/legal_user.rb +53 -0
  90. data/lib/mangopay/model/entity/user/natural_user.rb +50 -0
  91. data/lib/mangopay/model/entity/user/user.rb +18 -0
  92. data/lib/mangopay/model/entity/wallet.rb +28 -0
  93. data/lib/mangopay/model/enum/account_type.rb +24 -0
  94. data/lib/mangopay/model/enum/card_status.rb +15 -0
  95. data/lib/mangopay/model/enum/card_type.rb +33 -0
  96. data/lib/mangopay/model/enum/card_validity.rb +19 -0
  97. data/lib/mangopay/model/enum/country_iso.rb +759 -0
  98. data/lib/mangopay/model/enum/culture_code.rb +44 -0
  99. data/lib/mangopay/model/enum/currency_iso.rb +552 -0
  100. data/lib/mangopay/model/enum/declared_ubo_refused_reason_type.rb +16 -0
  101. data/lib/mangopay/model/enum/declared_ubo_status.rb +18 -0
  102. data/lib/mangopay/model/enum/deposit_type.rb +15 -0
  103. data/lib/mangopay/model/enum/direct_debit_type.rb +13 -0
  104. data/lib/mangopay/model/enum/dispute_doc_refused_reason_type.rb +25 -0
  105. data/lib/mangopay/model/enum/dispute_document_type.rb +23 -0
  106. data/lib/mangopay/model/enum/dispute_reason_type.rb +33 -0
  107. data/lib/mangopay/model/enum/dispute_status.rb +21 -0
  108. data/lib/mangopay/model/enum/dispute_type.rb +15 -0
  109. data/lib/mangopay/model/enum/document_status.rb +21 -0
  110. data/lib/mangopay/model/enum/download_format.rb +11 -0
  111. data/lib/mangopay/model/enum/event_type.rb +74 -0
  112. data/lib/mangopay/model/enum/funds_type.rb +15 -0
  113. data/lib/mangopay/model/enum/hook_status.rb +13 -0
  114. data/lib/mangopay/model/enum/hook_validity.rb +15 -0
  115. data/lib/mangopay/model/enum/income_range.rb +21 -0
  116. data/lib/mangopay/model/enum/kyc_doc_refused_reason_type.rb +37 -0
  117. data/lib/mangopay/model/enum/kyc_document_type.rb +19 -0
  118. data/lib/mangopay/model/enum/kyc_level.rb +13 -0
  119. data/lib/mangopay/model/enum/legal_person_type.rb +15 -0
  120. data/lib/mangopay/model/enum/mandate_culture_code.rb +23 -0
  121. data/lib/mangopay/model/enum/mandate_execution_type.rb +11 -0
  122. data/lib/mangopay/model/enum/mandate_scheme.rb +13 -0
  123. data/lib/mangopay/model/enum/mandate_status.rb +24 -0
  124. data/lib/mangopay/model/enum/mandate_type.rb +11 -0
  125. data/lib/mangopay/model/enum/natural_user_capacity.rb +15 -0
  126. data/lib/mangopay/model/enum/pay_in_execution_type.rb +18 -0
  127. data/lib/mangopay/model/enum/pay_in_payment_type.rb +21 -0
  128. data/lib/mangopay/model/enum/pay_out_payment_type.rb +11 -0
  129. data/lib/mangopay/model/enum/payment_status.rb +21 -0
  130. data/lib/mangopay/model/enum/person_type.rb +15 -0
  131. data/lib/mangopay/model/enum/platform_type.rb +23 -0
  132. data/lib/mangopay/model/enum/pre_authorization_execution_type.rb +11 -0
  133. data/lib/mangopay/model/enum/pre_authorization_status.rb +18 -0
  134. data/lib/mangopay/model/enum/refund_reason_type.rb +21 -0
  135. data/lib/mangopay/model/enum/report_status.rb +17 -0
  136. data/lib/mangopay/model/enum/report_type.rb +13 -0
  137. data/lib/mangopay/model/enum/secure_mode.rb +16 -0
  138. data/lib/mangopay/model/enum/transaction_nature.rb +17 -0
  139. data/lib/mangopay/model/enum/transaction_status.rb +15 -0
  140. data/lib/mangopay/model/enum/transaction_type.rb +15 -0
  141. data/lib/mangopay/model/enum/ubo_declaration_refused_reason_type.rb +19 -0
  142. data/lib/mangopay/model/enum/ubo_declaration_status.rb +21 -0
  143. data/lib/mangopay/model/event.rb +18 -0
  144. data/lib/mangopay/model/model.rb +194 -0
  145. data/lib/mangopay/model/money.rb +17 -0
  146. data/lib/mangopay/model/pay_in_web_extended_view.rb +31 -0
  147. data/lib/mangopay/model/refund_reason.rb +15 -0
  148. data/lib/mangopay/model/report_filter.rb +83 -0
  149. data/lib/mangopay/model/request/cancel_request.rb +16 -0
  150. data/lib/mangopay/model/request/complete_registration_request.rb +13 -0
  151. data/lib/mangopay/model/request/currency_request.rb +13 -0
  152. data/lib/mangopay/model/request/deactivation_request.rb +10 -0
  153. data/lib/mangopay/model/request/filter_request.rb +38 -0
  154. data/lib/mangopay/model/request/submit_document_request.rb +14 -0
  155. data/lib/mangopay/model/request/submit_ubo_declaration_request.rb +14 -0
  156. data/lib/mangopay/model/request/upload_file_request.rb +9 -0
  157. data/lib/mangopay/model/response_replica.rb +27 -0
  158. data/lib/mangopay/util/custom_formatter.rb +12 -0
  159. data/lib/mangopay/util/custom_logger.rb +34 -0
  160. data/lib/mangopay/util/enum.rb +52 -0
  161. data/lib/mangopay/util/file_encoder.rb +16 -0
  162. data/lib/mangopay/util/non_instantiable.rb +6 -0
  163. data/lib/mangopay/util/storage_strategy.rb +10 -0
  164. data/lib/mangopay/util/void_logger.rb +6 -0
  165. data/mangopay.gemspec +32 -0
  166. data/spec/context/address_context.rb +25 -0
  167. data/spec/context/bank_account_context.rb +138 -0
  168. data/spec/context/card_context.rb +46 -0
  169. data/spec/context/client_context.rb +45 -0
  170. data/spec/context/dispute_context.rb +37 -0
  171. data/spec/context/dispute_document_context.rb +20 -0
  172. data/spec/context/hook_context.rb +16 -0
  173. data/spec/context/kyc_document_context.rb +23 -0
  174. data/spec/context/mandate_context.rb +27 -0
  175. data/spec/context/pay_in_context.rb +225 -0
  176. data/spec/context/pay_out_context.rb +39 -0
  177. data/spec/context/pre_authorization_context.rb +41 -0
  178. data/spec/context/refund_context.rb +33 -0
  179. data/spec/context/report_context.rb +22 -0
  180. data/spec/context/repudiation_context.rb +19 -0
  181. data/spec/context/settlement_transfer_context.rb +28 -0
  182. data/spec/context/transfer_context.rb +51 -0
  183. data/spec/context/ubo_declaration_context.rb +25 -0
  184. data/spec/context/user_context.rb +83 -0
  185. data/spec/context/wallet_context.rb +53 -0
  186. data/spec/mangopay/bank_accounts_spec.rb +229 -0
  187. data/spec/mangopay/cards_spec.rb +135 -0
  188. data/spec/mangopay/client_wallets_spec.rb +148 -0
  189. data/spec/mangopay/clients_spec.rb +55 -0
  190. data/spec/mangopay/configuration_spec.rb +126 -0
  191. data/spec/mangopay/dispute_documents_spec.rb +174 -0
  192. data/spec/mangopay/disputes_spec.rb +265 -0
  193. data/spec/mangopay/e_money_spec.rb +38 -0
  194. data/spec/mangopay/events_spec.rb +50 -0
  195. data/spec/mangopay/hooks_spec.rb +71 -0
  196. data/spec/mangopay/kyc_documents_spec.rb +180 -0
  197. data/spec/mangopay/mandates_spec.rb +219 -0
  198. data/spec/mangopay/oauth_tokens_spec.rb +41 -0
  199. data/spec/mangopay/pay_ins_spec.rb +181 -0
  200. data/spec/mangopay/pay_outs_spec.rb +39 -0
  201. data/spec/mangopay/pre_authorizations_spec.rb +58 -0
  202. data/spec/mangopay/refunds_spec.rb +40 -0
  203. data/spec/mangopay/reports_spec.rb +121 -0
  204. data/spec/mangopay/responses_spec.rb +295 -0
  205. data/spec/mangopay/settlement_transfers_spec.rb +37 -0
  206. data/spec/mangopay/transactions_spec.rb +233 -0
  207. data/spec/mangopay/transfers_spec.rb +38 -0
  208. data/spec/mangopay/ubo_declarations_spec.rb +65 -0
  209. data/spec/mangopay/users_spec.rb +146 -0
  210. data/spec/mangopay/wallets_spec.rb +104 -0
  211. data/spec/resources/logo.png +0 -0
  212. data/spec/resources/test_pdf.pdf +0 -0
  213. data/spec/spec_helper.rb +72 -0
  214. metadata +349 -0
@@ -0,0 +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
34
+ end
@@ -0,0 +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
17
+ end
@@ -0,0 +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
27
+ end
@@ -0,0 +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
@@ -0,0 +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
15
+ end
@@ -0,0 +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
13
+ end
@@ -0,0 +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
9
+ end
@@ -0,0 +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
39
+ end
@@ -0,0 +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
66
+ end
@@ -0,0 +1,27 @@
1
+ require_relative '../common/jsonifier'
2
+
3
+ module MangoModel
4
+
5
+ # Represents an address.
6
+ class Address
7
+ include MangoPay::Jsonifier
8
+
9
+ # [String] First line of its details
10
+ attr_accessor :address_line1
11
+
12
+ # [String] Second line of its details
13
+ attr_accessor :address_line2
14
+
15
+ # [String] Its city
16
+ attr_accessor :city
17
+
18
+ # [String] Its region
19
+ attr_accessor :region
20
+
21
+ # [String] Its postal code
22
+ attr_accessor :postal_code
23
+
24
+ # [CountryIso] Its country
25
+ attr_accessor :country
26
+ end
27
+ end
@@ -0,0 +1,21 @@
1
+ require_relative '../common/jsonifier'
2
+
3
+ module MangoModel
4
+
5
+ # Object that represents validation status of a user declared as UBO
6
+ class DeclaredUbo
7
+ include MangoPay::Jsonifier
8
+
9
+ # [String] ID of the natural user declared as UBO
10
+ attr_accessor :user_id
11
+
12
+ # [DeclaredUboStatus] Validation status of the user declared as UBO
13
+ attr_accessor :status
14
+
15
+ # [DeclaredUboRefusedReasonType] Reason why the UBO is not validly declared
16
+ attr_accessor :refused_reason_type
17
+
18
+ # [String] Explanation of why the UBO declaration has been refused
19
+ attr_accessor :refused_reason_message
20
+ end
21
+ end
@@ -0,0 +1,15 @@
1
+ require_relative '../common/jsonifier'
2
+
3
+ module MangoModel
4
+
5
+ # Reason of a dispute
6
+ class DisputeReason
7
+ include MangoPay::Jsonifier
8
+
9
+ # [DisputeReasonType] Type of reason for the dispute
10
+ attr_accessor :dispute_reason_type
11
+
12
+ # [String] Explanation of the dispute reason
13
+ attr_accessor :dispute_reason_message
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ require_relative '../common/jsonifier'
2
+
3
+ module MangoModel
4
+
5
+ # Holds document page viewing data
6
+ class DocumentPageConsult
7
+ include MangoPay::Jsonifier
8
+
9
+ # [String] URL where this document page can be viewed
10
+ attr_accessor :url
11
+
12
+ # [Integer] Time when the page consult will expire (UNIX timestamp)
13
+ attr_accessor :expiration_date
14
+ end
15
+ end
@@ -0,0 +1,18 @@
1
+ require_relative '../common/jsonifier'
2
+
3
+ module MangoModel
4
+
5
+ # Represents a user's e-money.
6
+ class EMoney
7
+ include MangoPay::Jsonifier
8
+
9
+ # [String] Its owner's ID
10
+ attr_accessor :user_id
11
+
12
+ # [Money] The amount of money that has been credited to its owner
13
+ attr_accessor :credited_e_money
14
+
15
+ # [Money] The amount of money that has been debited from its owner
16
+ attr_accessor :debited_e_money
17
+ end
18
+ end
@@ -0,0 +1,26 @@
1
+ require_relative '../entity_base'
2
+ require_relative '../../../util/non_instantiable'
3
+ require_relative '../../enum/account_type'
4
+
5
+ module MangoModel
6
+
7
+ # Bank account entity
8
+ class BankAccount < EntityBase
9
+ extend NonInstantiable
10
+
11
+ # [String] Its owning user's ID
12
+ attr_accessor :user_id
13
+
14
+ # [AccountType] Its type
15
+ attr_accessor :type
16
+
17
+ # [String] Its owner's name
18
+ attr_accessor :owner_name
19
+
20
+ # [Address] Its owner's address
21
+ attr_accessor :owner_address
22
+
23
+ # [true/false] Whether it's active or not
24
+ attr_accessor :active
25
+ end
26
+ end
@@ -0,0 +1,27 @@
1
+ require_relative 'bank_account'
2
+ require_relative '../../enum/account_type'
3
+ require_relative '../../../common/jsonifier'
4
+
5
+ module MangoModel
6
+
7
+ # Bank account of +AccountType::CA+
8
+ class CaBankAccount < BankAccount
9
+ include MangoPay::Jsonifier
10
+
11
+ # [String] Its institution number (3-4 digits)
12
+ attr_accessor :institution_number
13
+
14
+ # [String] Its account number (max 20 digits)
15
+ attr_accessor :account_number
16
+
17
+ # [String] Its bank's branch code (5 digits)
18
+ attr_accessor :branch_code
19
+
20
+ # [String] Its bank's name (max 50 letters/digits)
21
+ attr_accessor :bank_name
22
+
23
+ def initialize
24
+ self.type = AccountType::CA
25
+ end
26
+ end
27
+ end