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.
- checksums.yaml +7 -0
- data/.gitignore +30 -0
- data/.rspec +4 -0
- data/.rubocop.yml +2 -0
- data/.travis.yml +13 -0
- data/Gemfile +2 -0
- data/LICENSE +20 -0
- data/README.md +380 -0
- data/bin/mangopay +9 -0
- data/lib/mangopay.rb +133 -0
- data/lib/mangopay/api/api.rb +9 -0
- data/lib/mangopay/api/api_methods.rb +137 -0
- data/lib/mangopay/api/auth_token_manager.rb +173 -0
- data/lib/mangopay/api/http_client.rb +325 -0
- data/lib/mangopay/api/service/bank_accounts.rb +146 -0
- data/lib/mangopay/api/service/cards.rb +152 -0
- data/lib/mangopay/api/service/client_wallets.rb +89 -0
- data/lib/mangopay/api/service/clients.rb +68 -0
- data/lib/mangopay/api/service/dispute_documents.rb +158 -0
- data/lib/mangopay/api/service/disputes.rb +187 -0
- data/lib/mangopay/api/service/e_money.rb +42 -0
- data/lib/mangopay/api/service/events.rb +47 -0
- data/lib/mangopay/api/service/hooks.rb +93 -0
- data/lib/mangopay/api/service/kyc_documents.rb +153 -0
- data/lib/mangopay/api/service/mandates.rb +142 -0
- data/lib/mangopay/api/service/oauth_tokens.rb +25 -0
- data/lib/mangopay/api/service/pay_ins.rb +260 -0
- data/lib/mangopay/api/service/pay_outs.rb +54 -0
- data/lib/mangopay/api/service/pre_authorizations.rb +69 -0
- data/lib/mangopay/api/service/refunds.rb +62 -0
- data/lib/mangopay/api/service/reports.rb +151 -0
- data/lib/mangopay/api/service/repudiations.rb +32 -0
- data/lib/mangopay/api/service/responses.rb +102 -0
- data/lib/mangopay/api/service/settlement_transfers.rb +55 -0
- data/lib/mangopay/api/service/transactions.rb +183 -0
- data/lib/mangopay/api/service/transfers.rb +54 -0
- data/lib/mangopay/api/service/ubo_declarations.rb +70 -0
- data/lib/mangopay/api/service/users.rb +163 -0
- data/lib/mangopay/api/service/wallets.rb +99 -0
- data/lib/mangopay/api/uri_provider.rb +35 -0
- data/lib/mangopay/common/json_tag_converter.rb +68 -0
- data/lib/mangopay/common/jsonifier.rb +249 -0
- data/lib/mangopay/common/log_provider.rb +34 -0
- data/lib/mangopay/common/rate_limit_interval.rb +17 -0
- data/lib/mangopay/common/read_only_fields.rb +27 -0
- data/lib/mangopay/common/response_error.rb +61 -0
- data/lib/mangopay/common/sort_direction.rb +15 -0
- data/lib/mangopay/common/sort_field.rb +13 -0
- data/lib/mangopay/common/template_url_options.rb +9 -0
- data/lib/mangopay/configuration.rb +39 -0
- data/lib/mangopay/environment.rb +66 -0
- data/lib/mangopay/model/address.rb +27 -0
- data/lib/mangopay/model/declared_ubo.rb +21 -0
- data/lib/mangopay/model/dispute_reason.rb +15 -0
- data/lib/mangopay/model/document_page_consult.rb +15 -0
- data/lib/mangopay/model/e_money.rb +18 -0
- data/lib/mangopay/model/entity/account/bank_account.rb +26 -0
- data/lib/mangopay/model/entity/account/ca_bank_account.rb +27 -0
- data/lib/mangopay/model/entity/account/gb_bank_account.rb +21 -0
- data/lib/mangopay/model/entity/account/iban_bank_account.rb +21 -0
- data/lib/mangopay/model/entity/account/other_bank_account.rb +24 -0
- data/lib/mangopay/model/entity/account/us_bank_account.rb +24 -0
- data/lib/mangopay/model/entity/card.rb +45 -0
- data/lib/mangopay/model/entity/card_registration.rb +43 -0
- data/lib/mangopay/model/entity/client.rb +63 -0
- data/lib/mangopay/model/entity/client_wallet.rb +23 -0
- data/lib/mangopay/model/entity/dispute.rb +50 -0
- data/lib/mangopay/model/entity/dispute_document.rb +29 -0
- data/lib/mangopay/model/entity/entity_base.rb +18 -0
- data/lib/mangopay/model/entity/hook.rb +26 -0
- data/lib/mangopay/model/entity/kyc_document.rb +28 -0
- data/lib/mangopay/model/entity/mandate.rb +51 -0
- data/lib/mangopay/model/entity/pay_in/bank_wire_direct_pay_in.rb +22 -0
- data/lib/mangopay/model/entity/pay_in/card_direct_pay_in.rb +33 -0
- data/lib/mangopay/model/entity/pay_in/card_pre_authorized_pay_in.rb +13 -0
- data/lib/mangopay/model/entity/pay_in/card_web_pay_in.rb +40 -0
- data/lib/mangopay/model/entity/pay_in/direct_debit_direct_pay_in.rb +23 -0
- data/lib/mangopay/model/entity/pay_in/direct_debit_web_pay_in.rb +38 -0
- data/lib/mangopay/model/entity/pay_in/pay_in.rb +16 -0
- data/lib/mangopay/model/entity/pay_out.rb +22 -0
- data/lib/mangopay/model/entity/pre_authorization.rb +68 -0
- data/lib/mangopay/model/entity/refund.rb +18 -0
- data/lib/mangopay/model/entity/report.rb +51 -0
- data/lib/mangopay/model/entity/repudiation.rb +18 -0
- data/lib/mangopay/model/entity/settlement_transfer.rb +17 -0
- data/lib/mangopay/model/entity/transaction.rb +52 -0
- data/lib/mangopay/model/entity/transfer.rb +13 -0
- data/lib/mangopay/model/entity/ubo_declaration.rb +32 -0
- data/lib/mangopay/model/entity/user/legal_user.rb +53 -0
- data/lib/mangopay/model/entity/user/natural_user.rb +50 -0
- data/lib/mangopay/model/entity/user/user.rb +18 -0
- data/lib/mangopay/model/entity/wallet.rb +28 -0
- data/lib/mangopay/model/enum/account_type.rb +24 -0
- data/lib/mangopay/model/enum/card_status.rb +15 -0
- data/lib/mangopay/model/enum/card_type.rb +33 -0
- data/lib/mangopay/model/enum/card_validity.rb +19 -0
- data/lib/mangopay/model/enum/country_iso.rb +759 -0
- data/lib/mangopay/model/enum/culture_code.rb +44 -0
- data/lib/mangopay/model/enum/currency_iso.rb +552 -0
- data/lib/mangopay/model/enum/declared_ubo_refused_reason_type.rb +16 -0
- data/lib/mangopay/model/enum/declared_ubo_status.rb +18 -0
- data/lib/mangopay/model/enum/deposit_type.rb +15 -0
- data/lib/mangopay/model/enum/direct_debit_type.rb +13 -0
- data/lib/mangopay/model/enum/dispute_doc_refused_reason_type.rb +25 -0
- data/lib/mangopay/model/enum/dispute_document_type.rb +23 -0
- data/lib/mangopay/model/enum/dispute_reason_type.rb +33 -0
- data/lib/mangopay/model/enum/dispute_status.rb +21 -0
- data/lib/mangopay/model/enum/dispute_type.rb +15 -0
- data/lib/mangopay/model/enum/document_status.rb +21 -0
- data/lib/mangopay/model/enum/download_format.rb +11 -0
- data/lib/mangopay/model/enum/event_type.rb +74 -0
- data/lib/mangopay/model/enum/funds_type.rb +15 -0
- data/lib/mangopay/model/enum/hook_status.rb +13 -0
- data/lib/mangopay/model/enum/hook_validity.rb +15 -0
- data/lib/mangopay/model/enum/income_range.rb +21 -0
- data/lib/mangopay/model/enum/kyc_doc_refused_reason_type.rb +37 -0
- data/lib/mangopay/model/enum/kyc_document_type.rb +19 -0
- data/lib/mangopay/model/enum/kyc_level.rb +13 -0
- data/lib/mangopay/model/enum/legal_person_type.rb +15 -0
- data/lib/mangopay/model/enum/mandate_culture_code.rb +23 -0
- data/lib/mangopay/model/enum/mandate_execution_type.rb +11 -0
- data/lib/mangopay/model/enum/mandate_scheme.rb +13 -0
- data/lib/mangopay/model/enum/mandate_status.rb +24 -0
- data/lib/mangopay/model/enum/mandate_type.rb +11 -0
- data/lib/mangopay/model/enum/natural_user_capacity.rb +15 -0
- data/lib/mangopay/model/enum/pay_in_execution_type.rb +18 -0
- data/lib/mangopay/model/enum/pay_in_payment_type.rb +21 -0
- data/lib/mangopay/model/enum/pay_out_payment_type.rb +11 -0
- data/lib/mangopay/model/enum/payment_status.rb +21 -0
- data/lib/mangopay/model/enum/person_type.rb +15 -0
- data/lib/mangopay/model/enum/platform_type.rb +23 -0
- data/lib/mangopay/model/enum/pre_authorization_execution_type.rb +11 -0
- data/lib/mangopay/model/enum/pre_authorization_status.rb +18 -0
- data/lib/mangopay/model/enum/refund_reason_type.rb +21 -0
- data/lib/mangopay/model/enum/report_status.rb +17 -0
- data/lib/mangopay/model/enum/report_type.rb +13 -0
- data/lib/mangopay/model/enum/secure_mode.rb +16 -0
- data/lib/mangopay/model/enum/transaction_nature.rb +17 -0
- data/lib/mangopay/model/enum/transaction_status.rb +15 -0
- data/lib/mangopay/model/enum/transaction_type.rb +15 -0
- data/lib/mangopay/model/enum/ubo_declaration_refused_reason_type.rb +19 -0
- data/lib/mangopay/model/enum/ubo_declaration_status.rb +21 -0
- data/lib/mangopay/model/event.rb +18 -0
- data/lib/mangopay/model/model.rb +194 -0
- data/lib/mangopay/model/money.rb +17 -0
- data/lib/mangopay/model/pay_in_web_extended_view.rb +31 -0
- data/lib/mangopay/model/refund_reason.rb +15 -0
- data/lib/mangopay/model/report_filter.rb +83 -0
- data/lib/mangopay/model/request/cancel_request.rb +16 -0
- data/lib/mangopay/model/request/complete_registration_request.rb +13 -0
- data/lib/mangopay/model/request/currency_request.rb +13 -0
- data/lib/mangopay/model/request/deactivation_request.rb +10 -0
- data/lib/mangopay/model/request/filter_request.rb +38 -0
- data/lib/mangopay/model/request/submit_document_request.rb +14 -0
- data/lib/mangopay/model/request/submit_ubo_declaration_request.rb +14 -0
- data/lib/mangopay/model/request/upload_file_request.rb +9 -0
- data/lib/mangopay/model/response_replica.rb +27 -0
- data/lib/mangopay/util/custom_formatter.rb +12 -0
- data/lib/mangopay/util/custom_logger.rb +34 -0
- data/lib/mangopay/util/enum.rb +52 -0
- data/lib/mangopay/util/file_encoder.rb +16 -0
- data/lib/mangopay/util/non_instantiable.rb +6 -0
- data/lib/mangopay/util/storage_strategy.rb +10 -0
- data/lib/mangopay/util/void_logger.rb +6 -0
- data/mangopay.gemspec +32 -0
- data/spec/context/address_context.rb +25 -0
- data/spec/context/bank_account_context.rb +138 -0
- data/spec/context/card_context.rb +46 -0
- data/spec/context/client_context.rb +45 -0
- data/spec/context/dispute_context.rb +37 -0
- data/spec/context/dispute_document_context.rb +20 -0
- data/spec/context/hook_context.rb +16 -0
- data/spec/context/kyc_document_context.rb +23 -0
- data/spec/context/mandate_context.rb +27 -0
- data/spec/context/pay_in_context.rb +225 -0
- data/spec/context/pay_out_context.rb +39 -0
- data/spec/context/pre_authorization_context.rb +41 -0
- data/spec/context/refund_context.rb +33 -0
- data/spec/context/report_context.rb +22 -0
- data/spec/context/repudiation_context.rb +19 -0
- data/spec/context/settlement_transfer_context.rb +28 -0
- data/spec/context/transfer_context.rb +51 -0
- data/spec/context/ubo_declaration_context.rb +25 -0
- data/spec/context/user_context.rb +83 -0
- data/spec/context/wallet_context.rb +53 -0
- data/spec/mangopay/bank_accounts_spec.rb +229 -0
- data/spec/mangopay/cards_spec.rb +135 -0
- data/spec/mangopay/client_wallets_spec.rb +148 -0
- data/spec/mangopay/clients_spec.rb +55 -0
- data/spec/mangopay/configuration_spec.rb +126 -0
- data/spec/mangopay/dispute_documents_spec.rb +174 -0
- data/spec/mangopay/disputes_spec.rb +265 -0
- data/spec/mangopay/e_money_spec.rb +38 -0
- data/spec/mangopay/events_spec.rb +50 -0
- data/spec/mangopay/hooks_spec.rb +71 -0
- data/spec/mangopay/kyc_documents_spec.rb +180 -0
- data/spec/mangopay/mandates_spec.rb +219 -0
- data/spec/mangopay/oauth_tokens_spec.rb +41 -0
- data/spec/mangopay/pay_ins_spec.rb +181 -0
- data/spec/mangopay/pay_outs_spec.rb +39 -0
- data/spec/mangopay/pre_authorizations_spec.rb +58 -0
- data/spec/mangopay/refunds_spec.rb +40 -0
- data/spec/mangopay/reports_spec.rb +121 -0
- data/spec/mangopay/responses_spec.rb +295 -0
- data/spec/mangopay/settlement_transfers_spec.rb +37 -0
- data/spec/mangopay/transactions_spec.rb +233 -0
- data/spec/mangopay/transfers_spec.rb +38 -0
- data/spec/mangopay/ubo_declarations_spec.rb +65 -0
- data/spec/mangopay/users_spec.rb +146 -0
- data/spec/mangopay/wallets_spec.rb +104 -0
- data/spec/resources/logo.png +0 -0
- data/spec/resources/test_pdf.pdf +0 -0
- data/spec/spec_helper.rb +72 -0
- metadata +349 -0
@@ -0,0 +1,183 @@
|
|
1
|
+
require_relative '../uri_provider'
|
2
|
+
|
3
|
+
module MangoApi
|
4
|
+
|
5
|
+
# Provides API method delegates concerning the +Transaction+ entity
|
6
|
+
module Transactions
|
7
|
+
class << self
|
8
|
+
include UriProvider
|
9
|
+
|
10
|
+
# Retrieves pages of transaction entities belonging to a certain user.
|
11
|
+
# Allows configuration of paging and sorting parameters by
|
12
|
+
# yielding a filtering object to a provided block. When no filters
|
13
|
+
# are specified, will retrieve the first page of 10 newest results.
|
14
|
+
#
|
15
|
+
# Allowed +FilterRequest+ params:
|
16
|
+
# * page
|
17
|
+
# * per_page
|
18
|
+
# * sort_field and sort_direction
|
19
|
+
# * before_date
|
20
|
+
# * after_date
|
21
|
+
# * status
|
22
|
+
# * nature
|
23
|
+
# * type
|
24
|
+
#
|
25
|
+
# @param +id+ [String] ID of the user whose transactions to retrieve
|
26
|
+
# @return [Array] the requested Transaction entity objects
|
27
|
+
def of_user(id)
|
28
|
+
uri = provide_uri(:get_users_transactions, id)
|
29
|
+
filter_request = nil
|
30
|
+
yield filter_request = FilterRequest.new if block_given?
|
31
|
+
results = HttpClient.get(uri, filter_request)
|
32
|
+
parse_results results
|
33
|
+
end
|
34
|
+
|
35
|
+
# Retrieves pages of transaction entities belonging to a certain wallet.
|
36
|
+
# Allows configuration of paging and sorting parameters by
|
37
|
+
# yielding a filtering object to a provided block. When no filters
|
38
|
+
# are specified, will retrieve the first page of 10 newest results.
|
39
|
+
#
|
40
|
+
# Allowed +FilterRequest+ params:
|
41
|
+
# * page
|
42
|
+
# * per_page
|
43
|
+
# * sort_field and sort_direction
|
44
|
+
# * before_date
|
45
|
+
# * after_date
|
46
|
+
# * status
|
47
|
+
# * nature
|
48
|
+
# * type
|
49
|
+
#
|
50
|
+
# @param +id+ [String] ID of the user whose transactions to retrieve
|
51
|
+
# @return [Array] the requested Transaction entity objects
|
52
|
+
def of_wallet(id)
|
53
|
+
uri = provide_uri(:get_wallets_transactions, id)
|
54
|
+
filter_request = nil
|
55
|
+
yield filter_request = FilterRequest.new if block_given?
|
56
|
+
results = HttpClient.get(uri, filter_request)
|
57
|
+
parse_results results
|
58
|
+
end
|
59
|
+
|
60
|
+
# Retrieves pages of transaction entities belonging to a certain dispute.
|
61
|
+
# Allows configuration of paging and sorting parameters by
|
62
|
+
# yielding a filtering object to a provided block. When no filters
|
63
|
+
# are specified, will retrieve the first page of 10 newest results.
|
64
|
+
#
|
65
|
+
# Allowed +FilterRequest+ params:
|
66
|
+
# * page
|
67
|
+
# * per_page
|
68
|
+
# * sort_field and sort_direction
|
69
|
+
# * before_date
|
70
|
+
# * after_date
|
71
|
+
# * status
|
72
|
+
# * nature
|
73
|
+
# * type
|
74
|
+
#
|
75
|
+
# @param +id+ [String] ID of the dispute whose transactions to retrieve
|
76
|
+
# @return [Array] the requested Transaction entity objects
|
77
|
+
def of_dispute(id)
|
78
|
+
uri = provide_uri(:get_disputes_transactions, id)
|
79
|
+
filter_request = nil
|
80
|
+
yield filter_request = FilterRequest.new if block_given?
|
81
|
+
results = HttpClient.get(uri, filter_request)
|
82
|
+
parse_results results
|
83
|
+
end
|
84
|
+
|
85
|
+
# Retrieves pages of transaction entities belonging to
|
86
|
+
# the current environment's client. Allows configuration of
|
87
|
+
# paging and sorting parameters by yielding a filtering object
|
88
|
+
# to a provided block. When no filters are specified, will
|
89
|
+
# retrieve the first page of 10 newest results.
|
90
|
+
#
|
91
|
+
# Allowed +FilterRequest+ params:
|
92
|
+
# * page
|
93
|
+
# * per_page
|
94
|
+
# * sort_field and sort_direction
|
95
|
+
# * before_date
|
96
|
+
# * after_date
|
97
|
+
# * status
|
98
|
+
# * nature
|
99
|
+
# * type
|
100
|
+
#
|
101
|
+
# @return [Array] the requested Transaction entity objects
|
102
|
+
def of_client
|
103
|
+
uri = provide_uri(:get_clients_transactions)
|
104
|
+
filter_request = nil
|
105
|
+
yield filter_request = FilterRequest.new if block_given?
|
106
|
+
results = HttpClient.get(uri, filter_request)
|
107
|
+
parse_results results
|
108
|
+
end
|
109
|
+
|
110
|
+
# Retrieves pages of transaction entities belonging to
|
111
|
+
# the current environment's client wallet specified by
|
112
|
+
# +funds_type+ and +currency+. Allows configuration of
|
113
|
+
# paging and sorting parameters by yielding a filtering object
|
114
|
+
# to a provided block. When no filters are specified, will
|
115
|
+
# retrieve the first page of 10 newest results.
|
116
|
+
#
|
117
|
+
# Allowed +FilterRequest+ params:
|
118
|
+
# * page
|
119
|
+
# * per_page
|
120
|
+
# * sort_field and sort_direction
|
121
|
+
# * before_date
|
122
|
+
# * after_date
|
123
|
+
# * status
|
124
|
+
# * nature
|
125
|
+
# * type
|
126
|
+
#
|
127
|
+
# @param +funds_type+ [FundsType] the funds' type of the wallet to
|
128
|
+
# retrieve Transactions for
|
129
|
+
# @return [Array] the requested Transaction entity objects
|
130
|
+
def of_client_wallet(funds_type, currency)
|
131
|
+
uri = provide_uri(:get_client_wallets_transactions,
|
132
|
+
funds_type,
|
133
|
+
currency)
|
134
|
+
filter_request = nil
|
135
|
+
yield filter_request = FilterRequest.new if block_given?
|
136
|
+
results = HttpClient.get(uri, filter_request)
|
137
|
+
parse_results results
|
138
|
+
end
|
139
|
+
|
140
|
+
# Retrieves pages of transaction entities belonging to a certain
|
141
|
+
# pre-authorization.Allows configuration of paging and sorting parameters
|
142
|
+
# by yielding a filtering object to a provided block. When no filters
|
143
|
+
# are specified, will retrieve the first page of 10 newest results.
|
144
|
+
#
|
145
|
+
# Allowed +FilterRequest+ params:
|
146
|
+
# * page
|
147
|
+
# * per_page
|
148
|
+
# * sort_field and sort_direction
|
149
|
+
#
|
150
|
+
# @param +id+ [String] ID of the dispute whose transactions to retrieve
|
151
|
+
# @return [Array] the requested Transaction entity objects
|
152
|
+
def of_pre_authorization(id)
|
153
|
+
uri = provide_uri(:get_pre_authorizations_transactions, id)
|
154
|
+
filter_request = nil
|
155
|
+
yield filter_request = FilterRequest.new if block_given?
|
156
|
+
results = HttpClient.get(uri, filter_request)
|
157
|
+
parse_results results
|
158
|
+
end
|
159
|
+
|
160
|
+
private
|
161
|
+
|
162
|
+
# Parses an array of JSON-originating hashes into the corresponding
|
163
|
+
# Transaction entity objects.
|
164
|
+
#
|
165
|
+
# @param +results+ [Array] JSON-originating data hashes
|
166
|
+
# @return [Array] parsed Transaction entity objects
|
167
|
+
def parse_results(results)
|
168
|
+
results.collect do |entity|
|
169
|
+
parse entity
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
# Parses a JSON-originating hash into the corresponding
|
174
|
+
# Transaction entity object.
|
175
|
+
#
|
176
|
+
# @param +response+ [Hash] JSON-originating data hash
|
177
|
+
# @return [Transaction] corresponding Transaction entity object
|
178
|
+
def parse(response)
|
179
|
+
MangoModel::Transaction.new.dejsonify response
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require_relative '../uri_provider'
|
2
|
+
|
3
|
+
module MangoApi
|
4
|
+
|
5
|
+
# Provides API method delegates concerning the +Transfer+ entity
|
6
|
+
module Transfers
|
7
|
+
class << self
|
8
|
+
include UriProvider
|
9
|
+
|
10
|
+
# Creates a new transfer entity.
|
11
|
+
#
|
12
|
+
# +Transfer+ properties:
|
13
|
+
# * Required
|
14
|
+
# * author_id
|
15
|
+
# * debited_funds
|
16
|
+
# * fees
|
17
|
+
# * debited_wallet_id
|
18
|
+
# * credited_wallet_id
|
19
|
+
# * Optional
|
20
|
+
# * tag
|
21
|
+
# * credited_user_id
|
22
|
+
#
|
23
|
+
# @param +transfer+ [Transfer] model object of transfer to be created
|
24
|
+
# @param +id_key+ [String] idempotency key for future response replication
|
25
|
+
# @return [Transfer] the newly-created Transfer entity object
|
26
|
+
def create(transfer, id_key = nil)
|
27
|
+
uri = provide_uri(:create_transfer)
|
28
|
+
response = HttpClient.post(uri, transfer, id_key)
|
29
|
+
parse response
|
30
|
+
end
|
31
|
+
|
32
|
+
# Retrieves a transfer entity.
|
33
|
+
#
|
34
|
+
# @param +id+ [String] ID of the transfer to be retrieved
|
35
|
+
# @return [Transfer] the requested entity object
|
36
|
+
def get(id)
|
37
|
+
uri = provide_uri(:get_transfer, id)
|
38
|
+
response = HttpClient.get(uri)
|
39
|
+
parse response
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
# Parses a JSON-originating hash into the corresponding
|
45
|
+
# Transfer entity object.
|
46
|
+
#
|
47
|
+
# @param +response+ [Hash] JSON-originating data hash
|
48
|
+
# @return [Transfer] corresponding Transfer entity object
|
49
|
+
def parse(response)
|
50
|
+
MangoModel::Transfer.new.dejsonify response
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require_relative '../uri_provider'
|
2
|
+
require_relative '../../model/request/submit_ubo_declaration_request'
|
3
|
+
|
4
|
+
module MangoApi
|
5
|
+
|
6
|
+
# Provides API method delegates for the +UboDeclaration+ entity
|
7
|
+
module UboDeclarations
|
8
|
+
class << self
|
9
|
+
include UriProvider
|
10
|
+
|
11
|
+
# Creates a UBO Declaration entity.
|
12
|
+
#
|
13
|
+
# +UboDeclaration+ properties:
|
14
|
+
# * Optional
|
15
|
+
# * tag
|
16
|
+
# * declared_ubos
|
17
|
+
#
|
18
|
+
# @param +ubo_declaration+ [UboDeclaration] model object of the
|
19
|
+
# UBO declaration to be created
|
20
|
+
# @param +user_id+ [String] ID of the user who the declaration is
|
21
|
+
# being created for
|
22
|
+
# @return [UboDeclaration] the newly-created UboDeclaration entity object
|
23
|
+
def create(ubo_declaration, user_id, id_key = nil)
|
24
|
+
uri = provide_uri(:create_ubo_declaration, user_id)
|
25
|
+
response = HttpClient.post(uri, ubo_declaration, id_key)
|
26
|
+
parse response
|
27
|
+
end
|
28
|
+
|
29
|
+
# Updates the UBO declaration entity identifiable by the provided
|
30
|
+
# +UboDeclaration+ object's ID.
|
31
|
+
#
|
32
|
+
# +UboDeclaration+ optional properties:
|
33
|
+
# * tag
|
34
|
+
# * status
|
35
|
+
# * declared_ubos
|
36
|
+
#
|
37
|
+
# @param +ubo_declaration+ [UboDeclaration] UBO declaration object
|
38
|
+
# with corresponding ID and updated data
|
39
|
+
# @return [UboDeclaration] the updated UboDeclaration entity object
|
40
|
+
def update(ubo_declaration)
|
41
|
+
uri = provide_uri(:update_ubo_declaration, ubo_declaration.id)
|
42
|
+
response = HttpClient.put(uri, ubo_declaration)
|
43
|
+
parse response
|
44
|
+
end
|
45
|
+
|
46
|
+
# Submits a UBO declaration entity for approval.
|
47
|
+
#
|
48
|
+
# @param +id+ [String] ID of the UBO declaration to submit
|
49
|
+
# @param +tag+ [String] custom data to add with the request
|
50
|
+
# @return [UboDeclaration] the submitted UboDeclaration entity object
|
51
|
+
def submit(id, tag = nil)
|
52
|
+
uri = provide_uri(:submit_ubo_declaration, id)
|
53
|
+
submit_request = SubmitUboDeclarationRequest.new(tag)
|
54
|
+
response = HttpClient.put(uri, submit_request)
|
55
|
+
parse response
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
# Parses a JSON-originating hash into the corresponding
|
61
|
+
# UboDeclaration entity object.
|
62
|
+
#
|
63
|
+
# @param +response+ [Hash] JSON-originating data hash
|
64
|
+
# @return [UboDeclaration] corresponding UboDeclaration entity object
|
65
|
+
def parse(response)
|
66
|
+
MangoModel::UboDeclaration.new.dejsonify response
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,163 @@
|
|
1
|
+
require_relative '../uri_provider'
|
2
|
+
require_relative '../../model/request/filter_request'
|
3
|
+
|
4
|
+
module MangoApi
|
5
|
+
|
6
|
+
# Provides API method delegates concerning the +User+ entity.
|
7
|
+
module Users
|
8
|
+
class << self
|
9
|
+
include UriProvider
|
10
|
+
|
11
|
+
# Creates a new user entity.
|
12
|
+
#
|
13
|
+
# +User+ properties:
|
14
|
+
# * +NaturalUser+
|
15
|
+
# * +first_name+ - required
|
16
|
+
# * +last_name+ - required
|
17
|
+
# * +birthday+ - required
|
18
|
+
# * +nationality+ - required
|
19
|
+
# * +country_of_residence+ - required
|
20
|
+
# * +email+ - required
|
21
|
+
# * +tag+ - optional
|
22
|
+
# * +address+ - optional
|
23
|
+
# * +occupation+ - optional
|
24
|
+
# * +income_range+ - optional
|
25
|
+
# * +capacity+ - optional
|
26
|
+
# * +LegalUser+
|
27
|
+
# * +legal_person_type+ - required
|
28
|
+
# * +name+ - required
|
29
|
+
# * +legal_representative_birthday+ - required
|
30
|
+
# * +legal_representative_country_of_residence+ - required
|
31
|
+
# * +legal_representative_nationality+ - required
|
32
|
+
# * +legal_representative_first_name+ - required
|
33
|
+
# * +legal_representative_last_name+ - required
|
34
|
+
# * +email+ - required
|
35
|
+
# * +tag+ - optional
|
36
|
+
# * +headquarters_address+ - optional
|
37
|
+
# * +legal_representative_address+ - optional
|
38
|
+
# * +legal_representative_email+ - optional
|
39
|
+
# * +company_number+ - optional
|
40
|
+
#
|
41
|
+
# +User+ properties:
|
42
|
+
# * Optional
|
43
|
+
# * tag
|
44
|
+
# * declared_ubos
|
45
|
+
#
|
46
|
+
# @param +user+ [User] model object of user to be created
|
47
|
+
# @param +id_key+ [String] idempotency key for future response replication
|
48
|
+
# @return [User] the newly-created User entity object
|
49
|
+
def create(user, id_key = nil)
|
50
|
+
uri = provide_uri(:create_user, user)
|
51
|
+
response = HttpClient.post(uri, user, id_key)
|
52
|
+
parse response
|
53
|
+
end
|
54
|
+
|
55
|
+
# Updates the user entity identifiable by
|
56
|
+
# the provided user object's ID.
|
57
|
+
#
|
58
|
+
# +User+ optional properties:
|
59
|
+
# * +NaturalUser+
|
60
|
+
# * tag
|
61
|
+
# * first_name
|
62
|
+
# * last_name
|
63
|
+
# * address
|
64
|
+
# * birthday
|
65
|
+
# * nationality
|
66
|
+
# * country_of_residence
|
67
|
+
# * occupation
|
68
|
+
# * income_range
|
69
|
+
# * email
|
70
|
+
# * +Legal_user+
|
71
|
+
# * tag
|
72
|
+
# * headquarters_address
|
73
|
+
# * name
|
74
|
+
# * legal_representative_address
|
75
|
+
# * legal_representative_birthday
|
76
|
+
# * legal_representative_country_of_residence
|
77
|
+
# * legal_representative_nationality
|
78
|
+
# * legal_representative_email
|
79
|
+
# * legal_representative_first_name
|
80
|
+
# * legal_representative_last_name
|
81
|
+
# * legal_person_type
|
82
|
+
# * company_number
|
83
|
+
#
|
84
|
+
# @param +user+ [User] user object with corresponding ID
|
85
|
+
# and updated data
|
86
|
+
# @return [User] the updated User entity object
|
87
|
+
def update(user)
|
88
|
+
uri = provide_uri :update_user,
|
89
|
+
user.person_type.to_s.downcase,
|
90
|
+
user.id
|
91
|
+
response = HttpClient.put(uri, user)
|
92
|
+
parse response
|
93
|
+
end
|
94
|
+
|
95
|
+
# Retrieves a user entity.
|
96
|
+
#
|
97
|
+
# @param +id+ [String] ID of the user to be retrieved
|
98
|
+
# @return [User] the requested entity object
|
99
|
+
def get(id)
|
100
|
+
uri = provide_uri(:get_user, id)
|
101
|
+
response = HttpClient.get(uri)
|
102
|
+
parse response
|
103
|
+
end
|
104
|
+
|
105
|
+
# Retrieves user entity pages. Allows configuration
|
106
|
+
# of paging and sorting parameters by yielding a filtering
|
107
|
+
# object to a provided block. When no filters are specified,
|
108
|
+
# will retrieve the first page of 10 newest results.
|
109
|
+
#
|
110
|
+
# Allowed +FilterRequest+ params:
|
111
|
+
# * page
|
112
|
+
# * per_page
|
113
|
+
# * sort_field and sort_direction
|
114
|
+
# * before_date
|
115
|
+
# * after_date
|
116
|
+
#
|
117
|
+
# @return [Array] corresponding User entity objects
|
118
|
+
def all
|
119
|
+
uri = provide_uri(:get_users)
|
120
|
+
filter_request = nil
|
121
|
+
yield filter_request = FilterRequest.new if block_given?
|
122
|
+
results = HttpClient.get(uri, filter_request)
|
123
|
+
parse_results results
|
124
|
+
end
|
125
|
+
|
126
|
+
private
|
127
|
+
|
128
|
+
# Parses an array of JSON-originating hashes into the corresponding
|
129
|
+
# User entity objects.
|
130
|
+
#
|
131
|
+
# @param +results+ [Array] JSON-originating data hashes
|
132
|
+
# @return [Array] parsed User entity objects
|
133
|
+
def parse_results(results)
|
134
|
+
results.collect do |entity|
|
135
|
+
parse entity
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
# Parses a JSON-originating hash into the corresponding
|
140
|
+
# User entity object.
|
141
|
+
#
|
142
|
+
# @param +response+ [Hash] JSON-originating data hash
|
143
|
+
# @return [User] corresponding User entity object
|
144
|
+
def parse(response)
|
145
|
+
type = user_type(response)
|
146
|
+
type.new.dejsonify response
|
147
|
+
end
|
148
|
+
|
149
|
+
# Asserts the type of user represented by a hash.
|
150
|
+
#
|
151
|
+
# @param +hash+ [Hash] source hash
|
152
|
+
# @return [Class] type of user represented by the hash
|
153
|
+
def user_type(hash)
|
154
|
+
case hash['PersonType']
|
155
|
+
when MangoModel::PersonType::NATURAL.to_s
|
156
|
+
MangoModel::NaturalUser
|
157
|
+
else
|
158
|
+
MangoModel::LegalUser
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|