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,146 +1,146 @@
1
- require_relative '../uri_provider'
2
- require_relative '../../model/request/filter_request'
3
- require_relative '../../model/request/deactivation_request'
4
-
5
- module MangoApi
6
-
7
- # Provides API method delegates concerning the +BankAccount+ entity
8
- module BankAccounts
9
- class << self
10
- include UriProvider
11
-
12
- # Creates a new bank account entity.
13
- #
14
- # +BankAccount+ properties:
15
- # * +IbanBankAccount
16
- # * +tag+ - optional
17
- # * +owner_address+ - required
18
- # * +owner_name+ - required
19
- # * +iban+ - required
20
- # * +bic+ - optional
21
- # * +UsBankAccount+
22
- # * +tag+ - optional
23
- # * +owner_address+ - required
24
- # * +owner_name+ - required
25
- # * +account_number+ - required
26
- # * +aba+ - required
27
- # * +deposit_account_type+ - optional
28
- # * +CaBankAccount+
29
- # * +tag+ - optional
30
- # * +owner_address+ - required
31
- # * +owner_name+ - required
32
- # * +branch_code+ - required
33
- # * +institution_number+ - required
34
- # * +account_number+ - required
35
- # * +bank_name+ - required
36
- # * +GbBankAccount+
37
- # * +tag+ - optional
38
- # * +owner_address+ - required
39
- # * +owner_name+ - required
40
- # * +sort_code+ - required
41
- # * +account_number+ - required
42
- # * +OtherBankAccount+
43
- # * +tag+ optional
44
- # * +owner_address+ - required
45
- # * +owner_name+ - required
46
- # * +country+ - required
47
- # * +bic+ - required
48
- # * +account_number+ - required
49
- #
50
- # @param +account+ [BankAccount] model object of account to be created
51
- # @param +id_key+ [String] idempotency key for future response replication
52
- # @return [BankAccount] the newly-created BankAccount entity object
53
- def create(account, id_key = nil)
54
- uri = provide_uri(:create_account, account)
55
- response = HttpClient.post(uri, account, id_key)
56
- parse response
57
- end
58
-
59
- # Deactivates a bank account entity.
60
- #
61
- # @param +user_id+ [String] ID of the owner of the account
62
- # being deactivated
63
- # @param +account_id+ [String] ID of the bank account being deactivated
64
- # @return [BankAccount] deactivated BankAccount entity object
65
- def deactivate(user_id, account_id)
66
- uri = provide_uri(:deactivate_account, user_id, account_id)
67
- response = HttpClient.put(uri, DeactivationRequest.new)
68
- parse response
69
- end
70
-
71
- # Retrieves a bank account for a user.
72
- #
73
- # @param +user_id+ [String] ID of the bank account's owner
74
- # @param +account+id+ [String] ID of the bank account
75
- # @return [BankAccount] the corresponding BankAccount object
76
- def get(user_id, account_id)
77
- uri = provide_uri(:get_account, user_id, account_id)
78
- response = HttpClient.get(uri)
79
- parse response
80
- end
81
-
82
- # Retrieves pages of a user's bank accounts. Allows
83
- # configuration of paging and sorting parameters by
84
- # yielding a filtering object to a provided block.
85
- # When no filters are specified, will retrieve the
86
- # first page of 10 newest results.
87
- #
88
- # Allowed +FilterRequest+ params:
89
- # * page
90
- # * per_page
91
- # * sort_field and sort_direction
92
- #
93
- # @param +user_id+ [String] ID of the user whose bank accounts to get
94
- # @return [Array] parsed BankAccount entity objects
95
- def all(user_id)
96
- uri = provide_uri(:get_accounts, user_id)
97
- filter_request = nil
98
- yield filter_request = FilterRequest.new if block_given?
99
- results = HttpClient.get(uri, filter_request)
100
- parse_results results
101
- end
102
-
103
- private
104
-
105
- # Parses an array of JSON-originating hashes into the corresponding
106
- # BankAccount entity objects.
107
- #
108
- # @param +results+ [Array] JSON-originating data hashes
109
- # @return [Array] parsed BankAccount entity objects
110
- def parse_results(results)
111
- results.collect do |entity|
112
- parse entity
113
- end
114
- end
115
-
116
- # Parses a JSON-originating hash into the corresponding
117
- # BankAccount entity object.
118
- #
119
- # @param +response+ [Hash] JSON-originating data hash
120
- # @return [BankAccount] corresponding BankAccount entity object
121
- def parse(response)
122
- type = bank_account_type(response)
123
- type.new.dejsonify response
124
- end
125
-
126
- # Asserts the type of bank account represented by a hash.
127
- #
128
- # @param +hash+ [Hash] source hash
129
- # @return [Class] type of bank account represented by the hash
130
- def bank_account_type(hash)
131
- case hash['Type']
132
- when MangoModel::AccountType::IBAN.to_s
133
- MangoModel::IbanBankAccount
134
- when MangoModel::AccountType::US.to_s
135
- MangoModel::UsBankAccount
136
- when MangoModel::AccountType::CA.to_s
137
- MangoModel::CaBankAccount
138
- when MangoModel::AccountType::GB.to_s
139
- MangoModel::GbBankAccount
140
- else
141
- MangoModel::OtherBankAccount
142
- end
143
- end
144
- end
145
- end
1
+ require_relative '../uri_provider'
2
+ require_relative '../../model/request/filter_request'
3
+ require_relative '../../model/request/deactivation_request'
4
+
5
+ module MangoApi
6
+
7
+ # Provides API method delegates concerning the +BankAccount+ entity
8
+ module BankAccounts
9
+ class << self
10
+ include UriProvider
11
+
12
+ # Creates a new bank account entity.
13
+ #
14
+ # +BankAccount+ properties:
15
+ # * +IbanBankAccount
16
+ # * +tag+ - optional
17
+ # * +owner_address+ - required
18
+ # * +owner_name+ - required
19
+ # * +iban+ - required
20
+ # * +bic+ - optional
21
+ # * +UsBankAccount+
22
+ # * +tag+ - optional
23
+ # * +owner_address+ - required
24
+ # * +owner_name+ - required
25
+ # * +account_number+ - required
26
+ # * +aba+ - required
27
+ # * +deposit_account_type+ - optional
28
+ # * +CaBankAccount+
29
+ # * +tag+ - optional
30
+ # * +owner_address+ - required
31
+ # * +owner_name+ - required
32
+ # * +branch_code+ - required
33
+ # * +institution_number+ - required
34
+ # * +account_number+ - required
35
+ # * +bank_name+ - required
36
+ # * +GbBankAccount+
37
+ # * +tag+ - optional
38
+ # * +owner_address+ - required
39
+ # * +owner_name+ - required
40
+ # * +sort_code+ - required
41
+ # * +account_number+ - required
42
+ # * +OtherBankAccount+
43
+ # * +tag+ optional
44
+ # * +owner_address+ - required
45
+ # * +owner_name+ - required
46
+ # * +country+ - required
47
+ # * +bic+ - required
48
+ # * +account_number+ - required
49
+ #
50
+ # @param +account+ [BankAccount] model object of account to be created
51
+ # @param +id_key+ [String] idempotency key for future response replication
52
+ # @return [BankAccount] the newly-created BankAccount entity object
53
+ def create(account, id_key = nil)
54
+ uri = provide_uri(:create_account, account)
55
+ response = HttpClient.post(uri, account, id_key)
56
+ parse response
57
+ end
58
+
59
+ # Deactivates a bank account entity.
60
+ #
61
+ # @param +user_id+ [String] ID of the owner of the account
62
+ # being deactivated
63
+ # @param +account_id+ [String] ID of the bank account being deactivated
64
+ # @return [BankAccount] deactivated BankAccount entity object
65
+ def deactivate(user_id, account_id)
66
+ uri = provide_uri(:deactivate_account, user_id, account_id)
67
+ response = HttpClient.put(uri, DeactivationRequest.new)
68
+ parse response
69
+ end
70
+
71
+ # Retrieves a bank account for a user.
72
+ #
73
+ # @param +user_id+ [String] ID of the bank account's owner
74
+ # @param +account+id+ [String] ID of the bank account
75
+ # @return [BankAccount] the corresponding BankAccount object
76
+ def get(user_id, account_id)
77
+ uri = provide_uri(:get_account, user_id, account_id)
78
+ response = HttpClient.get(uri)
79
+ parse response
80
+ end
81
+
82
+ # Retrieves pages of a user's bank accounts. Allows
83
+ # configuration of paging and sorting parameters by
84
+ # yielding a filtering object to a provided block.
85
+ # When no filters are specified, will retrieve the
86
+ # first page of 10 newest results.
87
+ #
88
+ # Allowed +FilterRequest+ params:
89
+ # * page
90
+ # * per_page
91
+ # * sort_field and sort_direction
92
+ #
93
+ # @param +user_id+ [String] ID of the user whose bank accounts to get
94
+ # @return [Array] parsed BankAccount entity objects
95
+ def all(user_id)
96
+ uri = provide_uri(:get_accounts, user_id)
97
+ filter_request = nil
98
+ yield filter_request = FilterRequest.new if block_given?
99
+ results = HttpClient.get(uri, filter_request)
100
+ parse_results results
101
+ end
102
+
103
+ private
104
+
105
+ # Parses an array of JSON-originating hashes into the corresponding
106
+ # BankAccount entity objects.
107
+ #
108
+ # @param +results+ [Array] JSON-originating data hashes
109
+ # @return [Array] parsed BankAccount entity objects
110
+ def parse_results(results)
111
+ results.collect do |entity|
112
+ parse entity
113
+ end
114
+ end
115
+
116
+ # Parses a JSON-originating hash into the corresponding
117
+ # BankAccount entity object.
118
+ #
119
+ # @param +response+ [Hash] JSON-originating data hash
120
+ # @return [BankAccount] corresponding BankAccount entity object
121
+ def parse(response)
122
+ type = bank_account_type(response)
123
+ type.new.dejsonify response
124
+ end
125
+
126
+ # Asserts the type of bank account represented by a hash.
127
+ #
128
+ # @param +hash+ [Hash] source hash
129
+ # @return [Class] type of bank account represented by the hash
130
+ def bank_account_type(hash)
131
+ case hash['Type']
132
+ when MangoModel::AccountType::IBAN.to_s
133
+ MangoModel::IbanBankAccount
134
+ when MangoModel::AccountType::US.to_s
135
+ MangoModel::UsBankAccount
136
+ when MangoModel::AccountType::CA.to_s
137
+ MangoModel::CaBankAccount
138
+ when MangoModel::AccountType::GB.to_s
139
+ MangoModel::GbBankAccount
140
+ else
141
+ MangoModel::OtherBankAccount
142
+ end
143
+ end
144
+ end
145
+ end
146
146
  end
@@ -0,0 +1,83 @@
1
+ require_relative '../uri_provider'
2
+
3
+ module MangoApi
4
+
5
+ # Provides API method delegates concerning the +BankingAlias+ entity
6
+ module BankingAliases
7
+ class << self
8
+ include UriProvider
9
+
10
+ # Creates an IBAN banking alias
11
+ #
12
+ # +BankingAlias+ properties:
13
+ # * Required:
14
+ # * credited_user_id
15
+ # * wallet_id
16
+ # * type
17
+ # * country
18
+ # * owner_name
19
+ # * active
20
+ # @param +banking_alias+ [BankingAlias] model object of banking alias to be created
21
+ # @param +wallet_id+ [String] the wallet_id
22
+ # @return [BakingAliasIBAN]
23
+ def create_iban(banking_alias, wallet_id)
24
+ uri = provide_uri(:banking_alias_create_iban, wallet_id)
25
+ response = HttpClient.post(uri, banking_alias)
26
+ parse response
27
+ end
28
+
29
+ # Retrieves a banking alias entity.
30
+ #
31
+ # @param +id+ [String] ID of the banking alias to be retrieved
32
+ # @param +banking_alias+ [BankingAlias] Whether is active or not
33
+ # @return [BankingAlias] the requested entity object
34
+ def update(id, banking_alias)
35
+ uri = provide_uri(:banking_alias_save, id)
36
+ response = HttpClient.put(uri, banking_alias)
37
+ parse response
38
+ end
39
+
40
+ # Retrieves a banking alias entity.
41
+ #
42
+ # @param +id+ [String] ID of the banking alias to be retrieved
43
+ # @return [BankingAlias] the requested entity object
44
+ def get(id)
45
+ uri = provide_uri(:banking_alias_get, id)
46
+ response = HttpClient.get(uri)
47
+ parse response
48
+ end
49
+
50
+ # Retrieves all banking alias entities corresponding to a waller.
51
+ #
52
+ # @param +id+ [String] ID of the banking alias to be retrieved
53
+ # @return [List<BankingAlias>] the requested entity object
54
+ def get_all(id)
55
+ uri = provide_uri(:banking_alias_all, id)
56
+ response = HttpClient.get(uri)
57
+ parse_results response
58
+ end
59
+
60
+ private
61
+
62
+ # Parses an array of JSON-originating hashes into the corresponding
63
+ # BankingAlias entity objects.
64
+ #
65
+ # @param +results+ [Array] JSON-originating data hashes
66
+ # @return [Array] parsed Mandate entity objects
67
+ def parse_results(results)
68
+ results.collect do |entity|
69
+ parse entity
70
+ end
71
+ end
72
+
73
+ # Parses a JSON-originating hash into the corresponding
74
+ # BankingAlias entity object.
75
+ #
76
+ # @param +response+ [Hash] JSON-originating data hash
77
+ # @return [BankingAlias] corresponding BankingAlias entity object
78
+ def parse(response)
79
+ MangoModel::BankingAlias.new.dejsonify response
80
+ end
81
+ end
82
+ end
83
+ end
@@ -1,152 +1,152 @@
1
- require_relative '../uri_provider'
2
- require_relative '../../model/request/complete_registration_request'
3
- require_relative '../../model/request/deactivation_request'
4
-
5
- module MangoApi
6
-
7
- # Provides API method delegates concerning the +Card+ entity
8
- module Cards
9
- class << self
10
- include UriProvider
11
-
12
- # Creates a new card registration entity.
13
- #
14
- # +CardRegistration+ properties:
15
- # * Required
16
- # * user_id
17
- # * currency
18
- # * Optional
19
- # * tag
20
- # * card_type
21
- #
22
- # @param +card_registration+ [CardRegistration] model object of
23
- # card registration to be created
24
- # @param +id_key+ [String] idempotency key for future response replication
25
- # @return [CardRegistration] the newly-created CardRegistration entity
26
- # object
27
- def create_registration(card_registration, id_key = nil)
28
- uri = provide_uri(:create_card_registration)
29
- response = HttpClient.post(uri, card_registration, id_key)
30
- parse_registration response
31
- end
32
-
33
- # Allows completion of a card registration with the registration
34
- # data received from the Tokenization Server.
35
- #
36
- # @param +registration_data+ [String] registration data from the
37
- # Tokenization Server
38
- # @return [CardRegistration] the completed CardRegistration entity
39
- # object
40
- def complete_registration(id, registration_data)
41
- uri = provide_uri(:complete_card_registration, id)
42
- request = CompleteRegistrationRequest.new(registration_data)
43
- response = HttpClient.put(uri, request)
44
- parse_registration response
45
- end
46
-
47
- # Retrieves a card registration entity.
48
- #
49
- # @param +id+ [String] ID of the card registration to retrieve
50
- # @return [CardRegistration] the requested entity object
51
- def get_registration(id)
52
- uri = provide_uri(:get_card_registration, id)
53
- response = HttpClient.get(uri)
54
- parse_registration response
55
- end
56
-
57
- # Retrieves a card entity.
58
- #
59
- # @param +id+ [String] ID of the card entity to retrieve
60
- # @return [Card] the requested Card entity object
61
- def get(id)
62
- uri = provide_uri(:get_card, id)
63
- response = HttpClient.get(uri)
64
- parse_card response
65
- end
66
-
67
- # Retrieves pages of a user's card entities.
68
- # Allows configuration of paging and sorting parameters
69
- # by yielding a filtering object to a provided block. When
70
- # no filters are specified, will retrieve the
71
- # first page of 10 newest results.
72
- #
73
- # Allowed +FilterRequest+ params:
74
- # * page
75
- # * per_page
76
- # * sort_field and sort_direction
77
- #
78
- # @param +id+ [String] ID of the user whose cards to retrieve
79
- # @return [Array] array of hashed card entities corresponding
80
- # to provided filters
81
- def of_user(id)
82
- uri = provide_uri(:get_users_cards, id)
83
- filter_request = nil
84
- yield filter_request = FilterRequest.new if block_given?
85
- results = HttpClient.get(uri, filter_request)
86
- parse_cards results
87
- end
88
-
89
- # Retrieves pages of card entities corresponding to a
90
- # certain fingerprint. The Fingerprint is a unique
91
- # hash key uniquely generated per 16-digit card number.
92
- #
93
- # Allowed +FilterRequest+ params:
94
- # * page
95
- # * per_page
96
- # * sort_field and sort_direction
97
- #
98
- # @param +fingerprint+ [String] uniquely hashed card number
99
- # which to search for
100
- # @return [Array] array of hashed card entities corresponding
101
- # to provided filters
102
- def with_fingerprint(fingerprint)
103
- uri = provide_uri(:get_cards_by_fingerprint, fingerprint)
104
- filter_request = nil
105
- yield filter_request = FilterRequest.new if block_given?
106
- results = HttpClient.get(uri, filter_request)
107
- parse_cards results
108
- end
109
-
110
- # Deactivates the card entity specified by an id.
111
- #
112
- # @param +id+ [String] ID of the card to deactivate
113
- # @return [Card] the deactivated card entity object
114
- def deactivate(id)
115
- uri = provide_uri(:deactivate_card, id)
116
- response = HttpClient.put(uri, DeactivationRequest.new)
117
- parse_card response
118
- end
119
-
120
- private
121
-
122
- # Parses a JSON-originating hash into the corresponding
123
- # CardRegistration entity object.
124
- #
125
- # @param +response+ [Hash] JSON-originating data hash
126
- # @return [CardRegistration] corresponding CardRegistration entity object
127
- def parse_registration(response)
128
- MangoModel::CardRegistration.new.dejsonify response
129
- end
130
-
131
- # Parses a JSON-originating hash into the corresponding
132
- # Card entity object.
133
- #
134
- # @param +response+ [Hash] JSON-originating data hash
135
- # @return [Card] corresponding Card entity object
136
- def parse_card(response)
137
- MangoModel::Card.new.dejsonify response
138
- end
139
-
140
- # Parses an array of JSON-originating hashes into the corresponding
141
- # Card entity objects.
142
- #
143
- # @param +results+ [Array] JSON-originating data hashes
144
- # @return [Array] parsed Card entity objects
145
- def parse_cards(results)
146
- results.collect do |entity|
147
- parse_card entity
148
- end
149
- end
150
- end
151
- end
1
+ require_relative '../uri_provider'
2
+ require_relative '../../model/request/complete_registration_request'
3
+ require_relative '../../model/request/deactivation_request'
4
+
5
+ module MangoApi
6
+
7
+ # Provides API method delegates concerning the +Card+ entity
8
+ module Cards
9
+ class << self
10
+ include UriProvider
11
+
12
+ # Creates a new card registration entity.
13
+ #
14
+ # +CardRegistration+ properties:
15
+ # * Required
16
+ # * user_id
17
+ # * currency
18
+ # * Optional
19
+ # * tag
20
+ # * card_type
21
+ #
22
+ # @param +card_registration+ [CardRegistration] model object of
23
+ # card registration to be created
24
+ # @param +id_key+ [String] idempotency key for future response replication
25
+ # @return [CardRegistration] the newly-created CardRegistration entity
26
+ # object
27
+ def create_registration(card_registration, id_key = nil)
28
+ uri = provide_uri(:create_card_registration)
29
+ response = HttpClient.post(uri, card_registration, id_key)
30
+ parse_registration response
31
+ end
32
+
33
+ # Allows completion of a card registration with the registration
34
+ # data received from the Tokenization Server.
35
+ #
36
+ # @param +registration_data+ [String] registration data from the
37
+ # Tokenization Server
38
+ # @return [CardRegistration] the completed CardRegistration entity
39
+ # object
40
+ def complete_registration(id, registration_data)
41
+ uri = provide_uri(:complete_card_registration, id)
42
+ request = CompleteRegistrationRequest.new(registration_data)
43
+ response = HttpClient.put(uri, request)
44
+ parse_registration response
45
+ end
46
+
47
+ # Retrieves a card registration entity.
48
+ #
49
+ # @param +id+ [String] ID of the card registration to retrieve
50
+ # @return [CardRegistration] the requested entity object
51
+ def get_registration(id)
52
+ uri = provide_uri(:get_card_registration, id)
53
+ response = HttpClient.get(uri)
54
+ parse_registration response
55
+ end
56
+
57
+ # Retrieves a card entity.
58
+ #
59
+ # @param +id+ [String] ID of the card entity to retrieve
60
+ # @return [Card] the requested Card entity object
61
+ def get(id)
62
+ uri = provide_uri(:get_card, id)
63
+ response = HttpClient.get(uri)
64
+ parse_card response
65
+ end
66
+
67
+ # Retrieves pages of a user's card entities.
68
+ # Allows configuration of paging and sorting parameters
69
+ # by yielding a filtering object to a provided block. When
70
+ # no filters are specified, will retrieve the
71
+ # first page of 10 newest results.
72
+ #
73
+ # Allowed +FilterRequest+ params:
74
+ # * page
75
+ # * per_page
76
+ # * sort_field and sort_direction
77
+ #
78
+ # @param +id+ [String] ID of the user whose cards to retrieve
79
+ # @return [Array] array of hashed card entities corresponding
80
+ # to provided filters
81
+ def of_user(id)
82
+ uri = provide_uri(:get_users_cards, id)
83
+ filter_request = nil
84
+ yield filter_request = FilterRequest.new if block_given?
85
+ results = HttpClient.get(uri, filter_request)
86
+ parse_cards results
87
+ end
88
+
89
+ # Retrieves pages of card entities corresponding to a
90
+ # certain fingerprint. The Fingerprint is a unique
91
+ # hash key uniquely generated per 16-digit card number.
92
+ #
93
+ # Allowed +FilterRequest+ params:
94
+ # * page
95
+ # * per_page
96
+ # * sort_field and sort_direction
97
+ #
98
+ # @param +fingerprint+ [String] uniquely hashed card number
99
+ # which to search for
100
+ # @return [Array] array of hashed card entities corresponding
101
+ # to provided filters
102
+ def with_fingerprint(fingerprint)
103
+ uri = provide_uri(:get_cards_by_fingerprint, fingerprint)
104
+ filter_request = nil
105
+ yield filter_request = FilterRequest.new if block_given?
106
+ results = HttpClient.get(uri, filter_request)
107
+ parse_cards results
108
+ end
109
+
110
+ # Deactivates the card entity specified by an id.
111
+ #
112
+ # @param +id+ [String] ID of the card to deactivate
113
+ # @return [Card] the deactivated card entity object
114
+ def deactivate(id)
115
+ uri = provide_uri(:deactivate_card, id)
116
+ response = HttpClient.put(uri, DeactivationRequest.new)
117
+ parse_card response
118
+ end
119
+
120
+ private
121
+
122
+ # Parses a JSON-originating hash into the corresponding
123
+ # CardRegistration entity object.
124
+ #
125
+ # @param +response+ [Hash] JSON-originating data hash
126
+ # @return [CardRegistration] corresponding CardRegistration entity object
127
+ def parse_registration(response)
128
+ MangoModel::CardRegistration.new.dejsonify response
129
+ end
130
+
131
+ # Parses a JSON-originating hash into the corresponding
132
+ # Card entity object.
133
+ #
134
+ # @param +response+ [Hash] JSON-originating data hash
135
+ # @return [Card] corresponding Card entity object
136
+ def parse_card(response)
137
+ MangoModel::Card.new.dejsonify response
138
+ end
139
+
140
+ # Parses an array of JSON-originating hashes into the corresponding
141
+ # Card entity objects.
142
+ #
143
+ # @param +results+ [Array] JSON-originating data hashes
144
+ # @return [Array] parsed Card entity objects
145
+ def parse_cards(results)
146
+ results.collect do |entity|
147
+ parse_card entity
148
+ end
149
+ end
150
+ end
151
+ end
152
152
  end