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,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
|
152
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require_relative '../uri_provider'
|
2
|
+
|
3
|
+
module MangoApi
|
4
|
+
|
5
|
+
# Provides API method delegates concerning the +ClientWallet+ entity
|
6
|
+
module ClientWallets
|
7
|
+
class << self
|
8
|
+
include UriProvider
|
9
|
+
|
10
|
+
# Retrieves a client wallet entity.
|
11
|
+
# Client wallet entity of provided funds' type and currency will be
|
12
|
+
# created if it does not yet exist.
|
13
|
+
#
|
14
|
+
# @param +funds_type+ [FundsType] funds' type of the wallet to retrieve
|
15
|
+
# @param +currency+ [CurrencyIso] currency of the wallet to retrieve
|
16
|
+
# @return [ClientWallet] the corresponding ClientWallet entity object
|
17
|
+
def get(funds_type, currency)
|
18
|
+
uri = provide_uri(:get_client_wallet, funds_type, currency)
|
19
|
+
response = HttpClient.get(uri)
|
20
|
+
parse response
|
21
|
+
end
|
22
|
+
|
23
|
+
# Retrieves client wallet entities. Allows configuration
|
24
|
+
# of paging and sorting parameters by yielding a filtering
|
25
|
+
# object to a provided block. When no filters are specified,
|
26
|
+
# will retrieve the first page of 10 newest results.
|
27
|
+
#
|
28
|
+
# Allowed +FilterRequest+ params:
|
29
|
+
# * page
|
30
|
+
# * per_page
|
31
|
+
# * sort_field and sort_direction
|
32
|
+
#
|
33
|
+
# @return [Array] array of hashed client wallet entities
|
34
|
+
# corresponding to provided filters
|
35
|
+
def all
|
36
|
+
uri = provide_uri(:get_client_wallets)
|
37
|
+
filter_request = nil
|
38
|
+
yield filter_request = FilterRequest.new if block_given?
|
39
|
+
results = HttpClient.get(uri, filter_request)
|
40
|
+
parse_results results
|
41
|
+
end
|
42
|
+
|
43
|
+
# Retrieves client wallet entities of a certain funds type.
|
44
|
+
# Allows configuration of paging and sorting parameters by
|
45
|
+
# yielding a filtering object to a provided block. When no
|
46
|
+
# filters are specified, will retrieve the first page of
|
47
|
+
# 10 newest results.
|
48
|
+
#
|
49
|
+
# Allowed +FilterRequest+ params:
|
50
|
+
# * page
|
51
|
+
# * per_page
|
52
|
+
# * sort_field and sort_direction
|
53
|
+
#
|
54
|
+
# @param +funds_type+ [FundsType] funds' type of the client
|
55
|
+
# wallets to retrieve
|
56
|
+
# @return [Array] array of hashed client wallet entities
|
57
|
+
# corresponding to provided filters
|
58
|
+
def of_funds_type(funds_type)
|
59
|
+
uri = provide_uri(:get_client_wallets_funds_type, funds_type)
|
60
|
+
filter_request = nil
|
61
|
+
yield filter_request = FilterRequest.new if block_given?
|
62
|
+
results = HttpClient.get(uri, filter_request)
|
63
|
+
parse_results results
|
64
|
+
end
|
65
|
+
|
66
|
+
private
|
67
|
+
|
68
|
+
# Parses an array of JSON-originating hashes into the corresponding
|
69
|
+
# ClientWallet entity objects.
|
70
|
+
#
|
71
|
+
# @param +results+ [Array] JSON-originating data hashes
|
72
|
+
# @return [Array] parsed ClientWallet entity objects
|
73
|
+
def parse_results(results)
|
74
|
+
results.collect do |entity|
|
75
|
+
parse entity
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
# Parses a JSON-originating hash into the corresponding
|
80
|
+
# ClientWallet entity object.
|
81
|
+
#
|
82
|
+
# @param +response+ [Hash] JSON-originating data hash
|
83
|
+
# @return [ClientWallet] corresponding ClientWallet entity object
|
84
|
+
def parse(response)
|
85
|
+
MangoModel::ClientWallet.new.dejsonify response
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require_relative '../uri_provider'
|
2
|
+
require_relative '../../util/file_encoder'
|
3
|
+
require_relative '../../model/request/upload_file_request'
|
4
|
+
|
5
|
+
module MangoApi
|
6
|
+
|
7
|
+
# Provides API method delegates concerning the +Client+ entity
|
8
|
+
module Clients
|
9
|
+
class << self
|
10
|
+
include UriProvider
|
11
|
+
|
12
|
+
# Updates the current environment's client entity.
|
13
|
+
#
|
14
|
+
# +Client+ optional properties:
|
15
|
+
# * primary_button_colour
|
16
|
+
# * primary_theme_colour
|
17
|
+
# * admin_emails
|
18
|
+
# * tech_emails
|
19
|
+
# * billing_emails
|
20
|
+
# * fraud_emails
|
21
|
+
# * headquarters_address
|
22
|
+
# * tax_number
|
23
|
+
# * platform_type
|
24
|
+
# * platform_description
|
25
|
+
# * platform_url
|
26
|
+
#
|
27
|
+
# @param +client+ [Client] client object with corresponding ID
|
28
|
+
# and updated dat
|
29
|
+
# @return [Client] updated Client entity object
|
30
|
+
def update(client)
|
31
|
+
uri = provide_uri(:update_client)
|
32
|
+
response = HttpClient.put(uri, client)
|
33
|
+
parse response
|
34
|
+
end
|
35
|
+
|
36
|
+
# Uploads the image file specified as the current
|
37
|
+
# environment's client's logo.
|
38
|
+
#
|
39
|
+
# @param +path+ [String] path of the logo image
|
40
|
+
def upload_logo(path)
|
41
|
+
uri = provide_uri(:upload_client_logo)
|
42
|
+
body = UploadFileRequest.new
|
43
|
+
body.file = FileEncoder.encode_base64 path
|
44
|
+
HttpClient.put(uri, body)
|
45
|
+
end
|
46
|
+
|
47
|
+
# Retrieves the current environment's client entity.
|
48
|
+
#
|
49
|
+
# @return [Client] current Client entity object
|
50
|
+
def get
|
51
|
+
uri = provide_uri(:get_client)
|
52
|
+
response = HttpClient.get(uri)
|
53
|
+
parse response
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
# Parses a JSON-originating hash into the corresponding
|
59
|
+
# Client entity object.
|
60
|
+
#
|
61
|
+
# @param +response+ [Hash] JSON-originating data hash
|
62
|
+
# @return [Client] corresponding Client entity object
|
63
|
+
def parse(response)
|
64
|
+
MangoModel::Client.new.dejsonify response
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,158 @@
|
|
1
|
+
require_relative '../uri_provider'
|
2
|
+
require_relative '../../model/request/upload_file_request'
|
3
|
+
require_relative '../../util/file_encoder'
|
4
|
+
require_relative '../../model/request/submit_document_request'
|
5
|
+
|
6
|
+
module MangoApi
|
7
|
+
|
8
|
+
# Provides API method delegates for the +DisputeDocument+ entity
|
9
|
+
module DisputeDocuments
|
10
|
+
class << self
|
11
|
+
include UriProvider
|
12
|
+
|
13
|
+
# Creates a new dispute document entity.
|
14
|
+
#
|
15
|
+
# +DisputeDocument+ properties:
|
16
|
+
# * Required
|
17
|
+
# * type
|
18
|
+
# * Optional
|
19
|
+
# * tag
|
20
|
+
#
|
21
|
+
# @param +document+ [DisputeDocument] model object of the dispute
|
22
|
+
# document to be created
|
23
|
+
# @param +dispute_id+ [String] ID of the corresponding dispute
|
24
|
+
# @return [DisputeDocument] the newly-created DisputeDocument entity object
|
25
|
+
def create(document, dispute_id)
|
26
|
+
uri = provide_uri(:create_dispute_document, dispute_id)
|
27
|
+
response = HttpClient.post(uri, document)
|
28
|
+
parse response
|
29
|
+
end
|
30
|
+
|
31
|
+
# Uploads a dispute document page. Allowed extensions:
|
32
|
+
# .pdf .jpeg .jpg .gif .png
|
33
|
+
#
|
34
|
+
# @param +id+ [String] ID of the dispute document entity
|
35
|
+
# that the page is being uploaded for
|
36
|
+
# @param +dispute_id+ [String] ID of the corresponding dispute entity
|
37
|
+
# @param +path+ [String] path to the file to upload
|
38
|
+
def upload_page(id, dispute_id, path)
|
39
|
+
uri = provide_uri(:upload_dispute_document_page, dispute_id, id)
|
40
|
+
body = UploadFileRequest.new
|
41
|
+
body.file = FileEncoder.encode_base64 path
|
42
|
+
HttpClient.post(uri, body)
|
43
|
+
end
|
44
|
+
|
45
|
+
# Submits a dispute document entity for approval
|
46
|
+
#
|
47
|
+
# @param +id+ [String] ID of the dispute document to submit
|
48
|
+
# @param +dispute_id+ [String] ID of the corresponding dispute
|
49
|
+
# @return [DisputeDocument] the submitted DisputeDocument entity object
|
50
|
+
def submit(id, dispute_id)
|
51
|
+
uri = provide_uri(:submit_dispute_document, dispute_id, id)
|
52
|
+
request = SubmitDocumentRequest.new
|
53
|
+
response = HttpClient.put(uri, request)
|
54
|
+
parse response
|
55
|
+
end
|
56
|
+
|
57
|
+
# Retrieves a dispute document entity.
|
58
|
+
#
|
59
|
+
# @param +id+ [String] ID of the dispute document to retrieve
|
60
|
+
# @return [DisputeDocument] the requested DisputeDocument entity object
|
61
|
+
def get(id)
|
62
|
+
uri = provide_uri(:get_dispute_document, id)
|
63
|
+
response = HttpClient.get(uri)
|
64
|
+
parse response
|
65
|
+
end
|
66
|
+
|
67
|
+
# Retrieves dispute documents belonging to a certain dispute.
|
68
|
+
# Allows configuration of paging and sorting parameters by
|
69
|
+
# yielding a filtering object to a provided block. When no filters are
|
70
|
+
# specified, will retrieve the first page of 10 newest results.
|
71
|
+
#
|
72
|
+
# Allowed +FilterRequest+ params:
|
73
|
+
# * page
|
74
|
+
# * per_page
|
75
|
+
# * sort_field and sort_direction
|
76
|
+
# * before_date
|
77
|
+
# * after_date
|
78
|
+
# * status
|
79
|
+
# * type
|
80
|
+
#
|
81
|
+
# @param +id+ [String] ID of the dispute whose documents to retrieve
|
82
|
+
# @return [Array] corresponding DisputeDocument entity objects
|
83
|
+
def of_dispute(id)
|
84
|
+
uri = provide_uri(:get_disputes_documents, id)
|
85
|
+
filter_request = nil
|
86
|
+
yield filter_request = FilterRequest.new if block_given?
|
87
|
+
results = HttpClient.get(uri, filter_request)
|
88
|
+
parse_results results
|
89
|
+
end
|
90
|
+
|
91
|
+
# Retrieves dispute documents belonging to the current environment's
|
92
|
+
# client. Allows configuration of paging and sorting parameters by
|
93
|
+
# yielding a filtering object to a provided block. When no filters are
|
94
|
+
# specified, will retrieve the first page of 10 newest results.
|
95
|
+
#
|
96
|
+
# Allowed +FilterRequest+ params:
|
97
|
+
# * page
|
98
|
+
# * per_page
|
99
|
+
# * sort_field and sort_direction
|
100
|
+
# * before_date
|
101
|
+
# * after_date
|
102
|
+
# * status
|
103
|
+
# * type
|
104
|
+
#
|
105
|
+
# @return [Array] corresponding DisputeDocument entity objects
|
106
|
+
def all
|
107
|
+
uri = provide_uri(:get_dispute_documents)
|
108
|
+
filter_request = nil
|
109
|
+
yield filter_request = FilterRequest.new if block_given?
|
110
|
+
results = HttpClient.get(uri, filter_request)
|
111
|
+
parse_results results
|
112
|
+
end
|
113
|
+
|
114
|
+
# Creates temporary URLs where each page of a dispute document
|
115
|
+
# can be viewed
|
116
|
+
#
|
117
|
+
# @param +id+ [String] ID of the document whose pages to consult
|
118
|
+
# @return [Array] the corresponding DocumentPageConsult objects
|
119
|
+
def consult(id)
|
120
|
+
uri = provide_uri(:consult_dispute_document, id)
|
121
|
+
results = HttpClient.post(uri, nil)
|
122
|
+
parse_consults results
|
123
|
+
end
|
124
|
+
|
125
|
+
private
|
126
|
+
|
127
|
+
# Parses an array of JSON-originating hashes into the corresponding
|
128
|
+
# DisputeDocument entity objects.
|
129
|
+
#
|
130
|
+
# @param +results+ [Array] JSON-originating data hashes
|
131
|
+
# @return [Array] parsed DisputeDocument entity objects
|
132
|
+
def parse_results(results)
|
133
|
+
results.collect do |entity|
|
134
|
+
parse entity
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
# Parses a JSON-originating hash into the corresponding
|
139
|
+
# DisputeDocument entity object.
|
140
|
+
#
|
141
|
+
# @param +response+ [Hash] JSON-originating data hash
|
142
|
+
# @return [DisputeDocument] corresponding DisputeDocument entity object
|
143
|
+
def parse(response)
|
144
|
+
MangoModel::DisputeDocument.new.dejsonify response
|
145
|
+
end
|
146
|
+
# Parses an array of JSON-originating hashes into the corresponding
|
147
|
+
# DocumentPageConsult objects.
|
148
|
+
#
|
149
|
+
# @param +consults+ [Array] JSON-originating data hashes
|
150
|
+
# @return [Array] corresponding DocumentPageConsult objects
|
151
|
+
def parse_consults(consults)
|
152
|
+
consults.collect do |consult|
|
153
|
+
MangoModel::DocumentPageConsult.new.dejsonify consult
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|