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.
- checksums.yaml +5 -5
- data/.gitignore +29 -29
- data/.rspec +3 -3
- data/.rubocop.yml +1 -1
- data/.travis.yml +21 -13
- data/Gemfile +2 -2
- data/LICENSE +20 -20
- data/README.md +379 -379
- data/bin/mangopay +9 -9
- data/lib/mangopay.rb +132 -132
- data/lib/mangopay/api/api.rb +8 -8
- data/lib/mangopay/api/api_methods.rb +160 -136
- data/lib/mangopay/api/auth_token_manager.rb +173 -173
- data/lib/mangopay/api/http_client.rb +324 -324
- data/lib/mangopay/api/service/bank_accounts.rb +145 -145
- data/lib/mangopay/api/service/banking_aliases.rb +83 -0
- data/lib/mangopay/api/service/cards.rb +151 -151
- data/lib/mangopay/api/service/client_wallets.rb +88 -88
- data/lib/mangopay/api/service/clients.rb +67 -67
- data/lib/mangopay/api/service/dispute_documents.rb +157 -157
- data/lib/mangopay/api/service/disputes.rb +186 -186
- data/lib/mangopay/api/service/e_money.rb +63 -41
- data/lib/mangopay/api/service/events.rb +46 -46
- data/lib/mangopay/api/service/hooks.rb +92 -92
- data/lib/mangopay/api/service/kyc_documents.rb +152 -152
- data/lib/mangopay/api/service/mandates.rb +141 -141
- data/lib/mangopay/api/service/oauth_tokens.rb +24 -24
- data/lib/mangopay/api/service/pay_ins.rb +369 -259
- data/lib/mangopay/api/service/pay_outs.rb +53 -53
- data/lib/mangopay/api/service/pre_authorizations.rb +126 -68
- data/lib/mangopay/api/service/refunds.rb +159 -61
- data/lib/mangopay/api/service/reports.rb +150 -150
- data/lib/mangopay/api/service/repudiations.rb +31 -31
- data/lib/mangopay/api/service/responses.rb +101 -101
- data/lib/mangopay/api/service/settlement_transfers.rb +54 -54
- data/lib/mangopay/api/service/transactions.rb +246 -182
- data/lib/mangopay/api/service/transfers.rb +53 -53
- data/lib/mangopay/api/service/ubo_declarations.rb +94 -69
- data/lib/mangopay/api/service/users.rb +162 -162
- data/lib/mangopay/api/service/wallets.rb +98 -98
- data/lib/mangopay/api/uri_provider.rb +32 -34
- data/lib/mangopay/common/json_tag_converter.rb +70 -67
- data/lib/mangopay/common/jsonifier.rb +266 -248
- data/lib/mangopay/common/log_provider.rb +33 -33
- data/lib/mangopay/common/rate_limit_interval.rb +16 -16
- data/lib/mangopay/common/read_only_fields.rb +26 -26
- data/lib/mangopay/common/response_error.rb +61 -61
- data/lib/mangopay/common/sort_direction.rb +14 -14
- data/lib/mangopay/common/sort_field.rb +12 -12
- data/lib/mangopay/common/template_url_options.rb +8 -8
- data/lib/mangopay/configuration.rb +38 -38
- data/lib/mangopay/environment.rb +65 -65
- data/lib/mangopay/model/address.rb +26 -26
- data/lib/mangopay/model/billing.rb +13 -0
- data/lib/mangopay/model/birthplace.rb +15 -0
- data/lib/mangopay/model/declared_ubo.rb +20 -20
- data/lib/mangopay/model/dispute_reason.rb +14 -14
- data/lib/mangopay/model/document_page_consult.rb +14 -14
- data/lib/mangopay/model/e_money.rb +17 -17
- data/lib/mangopay/model/entity/account/bank_account.rb +25 -25
- data/lib/mangopay/model/entity/account/ca_bank_account.rb +26 -26
- data/lib/mangopay/model/entity/account/debited_bank_account.rb +31 -0
- data/lib/mangopay/model/entity/account/gb_bank_account.rb +20 -20
- data/lib/mangopay/model/entity/account/iban_bank_account.rb +20 -20
- data/lib/mangopay/model/entity/account/other_bank_account.rb +23 -23
- data/lib/mangopay/model/entity/account/us_bank_account.rb +23 -23
- data/lib/mangopay/model/entity/banking_alias.rb +27 -0
- data/lib/mangopay/model/entity/card.rb +44 -44
- data/lib/mangopay/model/entity/card_registration.rb +42 -42
- data/lib/mangopay/model/entity/client.rb +65 -62
- data/lib/mangopay/model/entity/client_wallet.rb +22 -22
- data/lib/mangopay/model/entity/dispute.rb +49 -49
- data/lib/mangopay/model/entity/dispute_document.rb +28 -28
- data/lib/mangopay/model/entity/entity_base.rb +17 -17
- data/lib/mangopay/model/entity/hook.rb +25 -25
- data/lib/mangopay/model/entity/kyc_document.rb +27 -27
- data/lib/mangopay/model/entity/mandate.rb +50 -50
- data/lib/mangopay/model/entity/pay_in/apple_pay_direct_pay_in.rb +26 -0
- data/lib/mangopay/model/entity/pay_in/bank_wire_direct_pay_in.rb +24 -21
- data/lib/mangopay/model/entity/pay_in/bank_wire_external_instruction_pay_in.rb +19 -0
- data/lib/mangopay/model/entity/pay_in/card_direct_pay_in.rb +41 -32
- data/lib/mangopay/model/entity/pay_in/card_pre_authorized_pay_in.rb +15 -12
- data/lib/mangopay/model/entity/pay_in/card_web_pay_in.rb +36 -39
- data/lib/mangopay/model/entity/pay_in/direct_debit_direct_pay_in.rb +25 -22
- data/lib/mangopay/model/entity/pay_in/direct_debit_web_pay_in.rb +37 -37
- data/lib/mangopay/model/entity/pay_in/google_pay_direct_pay_in.rb +28 -0
- data/lib/mangopay/model/entity/pay_in/pay_in.rb +18 -15
- data/lib/mangopay/model/entity/pay_in/paypal_web_pay_in.rb +15 -0
- data/lib/mangopay/model/entity/pay_out.rb +21 -21
- data/lib/mangopay/model/entity/pre_authorization.rb +74 -67
- data/lib/mangopay/model/entity/refund.rb +17 -17
- data/lib/mangopay/model/entity/report.rb +50 -50
- data/lib/mangopay/model/entity/repudiation.rb +17 -17
- data/lib/mangopay/model/entity/settlement_transfer.rb +16 -16
- data/lib/mangopay/model/entity/transaction.rb +51 -51
- data/lib/mangopay/model/entity/transfer.rb +12 -12
- data/lib/mangopay/model/entity/ubo.rb +30 -0
- data/lib/mangopay/model/entity/ubo_declaration.rb +29 -31
- data/lib/mangopay/model/entity/user/legal_user.rb +55 -52
- data/lib/mangopay/model/entity/user/natural_user.rb +49 -49
- data/lib/mangopay/model/entity/user/user.rb +17 -17
- data/lib/mangopay/model/entity/wallet.rb +27 -27
- data/lib/mangopay/model/enum/account_type.rb +23 -23
- data/lib/mangopay/model/enum/avs_result.rb +19 -0
- data/lib/mangopay/model/enum/banking_alias_type.rb +12 -0
- data/lib/mangopay/model/enum/business_type.rb +17 -0
- data/lib/mangopay/model/enum/card_status.rb +14 -14
- data/lib/mangopay/model/enum/card_type.rb +32 -32
- data/lib/mangopay/model/enum/card_validity.rb +18 -18
- data/lib/mangopay/model/enum/country_iso.rb +758 -758
- data/lib/mangopay/model/enum/culture_code.rb +43 -43
- data/lib/mangopay/model/enum/currency_iso.rb +551 -551
- data/lib/mangopay/model/enum/declared_ubo_refused_reason_type.rb +15 -15
- data/lib/mangopay/model/enum/declared_ubo_status.rb +17 -17
- data/lib/mangopay/model/enum/deposit_type.rb +14 -14
- data/lib/mangopay/model/enum/direct_debit_type.rb +12 -12
- data/lib/mangopay/model/enum/dispute_doc_refused_reason_type.rb +24 -24
- data/lib/mangopay/model/enum/dispute_document_type.rb +22 -22
- data/lib/mangopay/model/enum/dispute_reason_type.rb +32 -32
- data/lib/mangopay/model/enum/dispute_status.rb +20 -20
- data/lib/mangopay/model/enum/dispute_type.rb +14 -14
- data/lib/mangopay/model/enum/document_status.rb +20 -20
- data/lib/mangopay/model/enum/download_format.rb +10 -10
- data/lib/mangopay/model/enum/event_type.rb +76 -73
- data/lib/mangopay/model/enum/funds_type.rb +14 -14
- data/lib/mangopay/model/enum/hook_status.rb +12 -12
- data/lib/mangopay/model/enum/hook_validity.rb +14 -14
- data/lib/mangopay/model/enum/income_range.rb +20 -20
- data/lib/mangopay/model/enum/kyc_doc_refused_reason_type.rb +36 -36
- data/lib/mangopay/model/enum/kyc_document_type.rb +18 -18
- data/lib/mangopay/model/enum/kyc_level.rb +12 -12
- data/lib/mangopay/model/enum/legal_person_type.rb +14 -14
- data/lib/mangopay/model/enum/mandate_culture_code.rb +22 -22
- data/lib/mangopay/model/enum/mandate_execution_type.rb +10 -10
- data/lib/mangopay/model/enum/mandate_scheme.rb +12 -12
- data/lib/mangopay/model/enum/mandate_status.rb +23 -23
- data/lib/mangopay/model/enum/mandate_type.rb +10 -10
- data/lib/mangopay/model/enum/natural_user_capacity.rb +14 -14
- data/lib/mangopay/model/enum/pay_in_execution_type.rb +17 -17
- data/lib/mangopay/model/enum/pay_in_payment_type.rb +29 -20
- data/lib/mangopay/model/enum/pay_out_payment_type.rb +10 -10
- data/lib/mangopay/model/enum/payment_status.rb +20 -20
- data/lib/mangopay/model/enum/person_type.rb +14 -14
- data/lib/mangopay/model/enum/platform_type.rb +22 -22
- data/lib/mangopay/model/enum/pre_authorization_execution_type.rb +10 -10
- data/lib/mangopay/model/enum/pre_authorization_status.rb +17 -17
- data/lib/mangopay/model/enum/refund_reason_type.rb +20 -20
- data/lib/mangopay/model/enum/report_status.rb +16 -16
- data/lib/mangopay/model/enum/report_type.rb +12 -12
- data/lib/mangopay/model/enum/sector.rb +29 -0
- data/lib/mangopay/model/enum/secure_mode.rb +15 -15
- data/lib/mangopay/model/enum/transaction_nature.rb +16 -16
- data/lib/mangopay/model/enum/transaction_status.rb +14 -14
- data/lib/mangopay/model/enum/transaction_type.rb +14 -14
- data/lib/mangopay/model/enum/ubo_declaration_refused_reason_type.rb +18 -18
- data/lib/mangopay/model/enum/ubo_declaration_status.rb +20 -20
- data/lib/mangopay/model/event.rb +17 -17
- data/lib/mangopay/model/model.rb +214 -193
- data/lib/mangopay/model/money.rb +16 -16
- data/lib/mangopay/model/pay_in_web_extended_view.rb +30 -30
- data/lib/mangopay/model/platform_categorization.rb +15 -0
- data/lib/mangopay/model/refund_reason.rb +14 -14
- data/lib/mangopay/model/report_filter.rb +82 -82
- data/lib/mangopay/model/request/cancel_request.rb +15 -15
- data/lib/mangopay/model/request/complete_registration_request.rb +12 -12
- data/lib/mangopay/model/request/currency_request.rb +12 -12
- data/lib/mangopay/model/request/deactivation_request.rb +9 -9
- data/lib/mangopay/model/request/filter_request.rb +37 -37
- data/lib/mangopay/model/request/submit_document_request.rb +13 -13
- data/lib/mangopay/model/request/submit_ubo_declaration_request.rb +16 -13
- data/lib/mangopay/model/request/upload_file_request.rb +8 -8
- data/lib/mangopay/model/response_replica.rb +26 -26
- data/lib/mangopay/model/security_info.rb +13 -0
- data/lib/mangopay/util/custom_formatter.rb +11 -11
- data/lib/mangopay/util/custom_logger.rb +33 -33
- data/lib/mangopay/util/enum.rb +51 -51
- data/lib/mangopay/util/file_encoder.rb +15 -15
- data/lib/mangopay/util/non_instantiable.rb +5 -5
- data/lib/mangopay/util/storage_strategy.rb +9 -9
- data/lib/mangopay/util/void_logger.rb +5 -5
- data/mangopay-v4.gemspec +32 -0
- data/mangopay.gemspec +32 -32
- data/spec/context/address_context.rb +24 -24
- data/spec/context/bank_account_context.rb +137 -137
- data/spec/context/banking_alias_context.rb +17 -0
- data/spec/context/birthplace_context.rb +17 -0
- data/spec/context/card_context.rb +45 -45
- data/spec/context/client_context.rb +43 -44
- data/spec/context/dispute_context.rb +36 -36
- data/spec/context/dispute_document_context.rb +19 -19
- data/spec/context/hook_context.rb +15 -15
- data/spec/context/kyc_document_context.rb +22 -22
- data/spec/context/mandate_context.rb +26 -26
- data/spec/context/pay_in_context.rb +319 -224
- data/spec/context/pay_out_context.rb +39 -38
- data/spec/context/pre_authorization_context.rb +44 -40
- data/spec/context/refund_context.rb +32 -32
- data/spec/context/report_context.rb +21 -21
- data/spec/context/repudiation_context.rb +18 -18
- data/spec/context/settlement_transfer_context.rb +27 -27
- data/spec/context/transfer_context.rb +50 -50
- data/spec/context/ubo_declaration_context.rb +29 -24
- data/spec/context/user_context.rb +83 -82
- data/spec/context/wallet_context.rb +52 -52
- data/spec/mangopay/bank_accounts_spec.rb +228 -228
- data/spec/mangopay/banking_alias_spec.rb +85 -0
- data/spec/mangopay/cards_spec.rb +133 -134
- data/spec/mangopay/client_wallets_spec.rb +147 -147
- data/spec/mangopay/clients_spec.rb +56 -54
- data/spec/mangopay/configuration_spec.rb +125 -125
- data/spec/mangopay/dispute_documents_spec.rb +173 -173
- data/spec/mangopay/disputes_spec.rb +264 -264
- data/spec/mangopay/e_money_spec.rb +57 -37
- data/spec/mangopay/events_spec.rb +49 -49
- data/spec/mangopay/hooks_spec.rb +70 -70
- data/spec/mangopay/kyc_documents_spec.rb +179 -179
- data/spec/mangopay/mandates_spec.rb +218 -218
- data/spec/mangopay/oauth_tokens_spec.rb +40 -40
- data/spec/mangopay/pay_ins_spec.rb +279 -180
- data/spec/mangopay/pay_outs_spec.rb +38 -38
- data/spec/mangopay/pre_authorizations_spec.rb +134 -57
- data/spec/mangopay/refunds_spec.rb +187 -39
- data/spec/mangopay/reports_spec.rb +118 -120
- data/spec/mangopay/responses_spec.rb +324 -294
- data/spec/mangopay/settlement_transfers_spec.rb +36 -36
- data/spec/mangopay/transactions_spec.rb +347 -232
- data/spec/mangopay/transfers_spec.rb +37 -37
- data/spec/mangopay/ubo_declarations_spec.rb +127 -64
- data/spec/mangopay/users_spec.rb +145 -145
- data/spec/mangopay/wallets_spec.rb +103 -103
- data/spec/spec_helper.rb +72 -72
- data/spec/tmp/MangoPay.AuthorizationToken.FileStore.tmp +6 -0
- data/spec/tmp/mangopay.log.tmp +1201 -0
- metadata +31 -5
@@ -1,34 +1,34 @@
|
|
1
|
-
require_relative '../util/custom_logger'
|
2
|
-
require_relative '../util/void_logger'
|
3
|
-
require_relative '../util/custom_formatter'
|
4
|
-
|
5
|
-
module MangoPay
|
6
|
-
|
7
|
-
# Provides logger objects.
|
8
|
-
class LogProvider
|
9
|
-
|
10
|
-
ENABLE_LOGGING =
|
11
|
-
ENABLE_HTTP_LOGGING =
|
12
|
-
|
13
|
-
class << self
|
14
|
-
|
15
|
-
def provide(context)
|
16
|
-
if needs_http_logger(context) && ENABLE_HTTP_LOGGING\
|
17
|
-
|| !
|
18
|
-
logger = CustomLogger.new(STDOUT)
|
19
|
-
logger.progname = context.name
|
20
|
-
logger.formatter = CustomFormatter.new
|
21
|
-
logger
|
22
|
-
else
|
23
|
-
VoidLogger.new
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
private
|
28
|
-
|
29
|
-
def needs_http_logger(context)
|
30
|
-
context.name =~ /HttpClient/ || context.name =~ /Jsonifier/
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
1
|
+
require_relative '../util/custom_logger'
|
2
|
+
require_relative '../util/void_logger'
|
3
|
+
require_relative '../util/custom_formatter'
|
4
|
+
|
5
|
+
module MangoPay
|
6
|
+
|
7
|
+
# Provides logger objects.
|
8
|
+
class LogProvider
|
9
|
+
|
10
|
+
ENABLE_LOGGING = false
|
11
|
+
ENABLE_HTTP_LOGGING = false
|
12
|
+
|
13
|
+
class << self
|
14
|
+
|
15
|
+
def provide(context)
|
16
|
+
if needs_http_logger(context) && ENABLE_HTTP_LOGGING\
|
17
|
+
|| (!needs_http_logger(context) && ENABLE_LOGGING)
|
18
|
+
logger = CustomLogger.new(STDOUT)
|
19
|
+
logger.progname = context.name
|
20
|
+
logger.formatter = CustomFormatter.new
|
21
|
+
logger
|
22
|
+
else
|
23
|
+
VoidLogger.new
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def needs_http_logger(context)
|
30
|
+
context.name =~ /HttpClient/ || context.name =~ /Jsonifier/
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
34
|
end
|
@@ -1,17 +1,17 @@
|
|
1
|
-
require_relative '../util/enum'
|
2
|
-
|
3
|
-
module MangoPay
|
4
|
-
|
5
|
-
# MangoPay API rate limit reset times enumeration
|
6
|
-
class RateLimitInterval
|
7
|
-
extend Enum
|
8
|
-
|
9
|
-
FIFTEEN_MIN = value 'FIFTEEN_MINUTES'
|
10
|
-
|
11
|
-
THIRTY_MIN = value 'THIRTY_MINUTE'
|
12
|
-
|
13
|
-
HOUR = value 'HOUR'
|
14
|
-
|
15
|
-
DAY = value 'DAY'
|
16
|
-
end
|
1
|
+
require_relative '../util/enum'
|
2
|
+
|
3
|
+
module MangoPay
|
4
|
+
|
5
|
+
# MangoPay API rate limit reset times enumeration
|
6
|
+
class RateLimitInterval
|
7
|
+
extend Enum
|
8
|
+
|
9
|
+
FIFTEEN_MIN = value 'FIFTEEN_MINUTES'
|
10
|
+
|
11
|
+
THIRTY_MIN = value 'THIRTY_MINUTE'
|
12
|
+
|
13
|
+
HOUR = value 'HOUR'
|
14
|
+
|
15
|
+
DAY = value 'DAY'
|
16
|
+
end
|
17
17
|
end
|
@@ -1,27 +1,27 @@
|
|
1
|
-
module MangoPay
|
2
|
-
|
3
|
-
# Assures that no fields which are considered read-only
|
4
|
-
# remain in a hash meant to be sent as a request body.
|
5
|
-
module ReadOnlyFields
|
6
|
-
|
7
|
-
@read_only_fields = %w[
|
8
|
-
CreationDate
|
9
|
-
]
|
10
|
-
|
11
|
-
class << self
|
12
|
-
|
13
|
-
# Checks whether any of the fields marked as read-only
|
14
|
-
# are present in the given hash. Removes those which are.
|
15
|
-
#
|
16
|
-
# @param +hash+ [Hash] hash to check for read-only fields
|
17
|
-
# @return [Hash] the given hash minus any read-only fields
|
18
|
-
#
|
19
|
-
# noinspection RubyResolve
|
20
|
-
def remove_from!(hash)
|
21
|
-
@read_only_fields.each do |field|
|
22
|
-
hash.delete field
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
1
|
+
module MangoPay
|
2
|
+
|
3
|
+
# Assures that no fields which are considered read-only
|
4
|
+
# remain in a hash meant to be sent as a request body.
|
5
|
+
module ReadOnlyFields
|
6
|
+
|
7
|
+
@read_only_fields = %w[
|
8
|
+
CreationDate, PaymentData
|
9
|
+
]
|
10
|
+
|
11
|
+
class << self
|
12
|
+
|
13
|
+
# Checks whether any of the fields marked as read-only
|
14
|
+
# are present in the given hash. Removes those which are.
|
15
|
+
#
|
16
|
+
# @param +hash+ [Hash] hash to check for read-only fields
|
17
|
+
# @return [Hash] the given hash minus any read-only fields
|
18
|
+
#
|
19
|
+
# noinspection RubyResolve
|
20
|
+
def remove_from!(hash)
|
21
|
+
@read_only_fields.each do |field|
|
22
|
+
hash.delete field
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
27
|
end
|
@@ -1,61 +1,61 @@
|
|
1
|
-
module MangoPay
|
2
|
-
|
3
|
-
# See http://docs.mangopay.com/api-references/response-codes-rules/
|
4
|
-
# and http://docs.mangopay.com/api-references/error-codes/
|
5
|
-
#
|
6
|
-
# Thrown from any MangoPay API call whenever
|
7
|
-
# it returns response with HTTP code != 200.
|
8
|
-
# Check @details hash for further info.
|
9
|
-
#
|
10
|
-
# Two example exceptions with details:
|
11
|
-
#
|
12
|
-
# * <MangoPay::ResponseError:
|
13
|
-
# One or several required parameters are missing or incorrect. [...]
|
14
|
-
# Email: The Email field is required.>
|
15
|
-
# {"Message"=>"One or several required parameters are missing or incorrect.
|
16
|
-
# An incorrect resource ID also raises this kind of error.",
|
17
|
-
# "Type"=>"param_error",
|
18
|
-
# "Id"=>"66936e92-3f21-4a35-b6cf-f1d17c2fb6e5",
|
19
|
-
# "Date"=>1409047252.0,
|
20
|
-
# "errors"=>{"Email"=>"The Email field is required."},
|
21
|
-
# "Code"=>"400",
|
22
|
-
# "Url"=>"/v2/sdk-unit-tests/users/natural"}
|
23
|
-
#
|
24
|
-
# * <MangoPay::ResponseError: Internal Server Error>
|
25
|
-
# {"Message"=>"Internal Server Error",
|
26
|
-
# "Type"=>"other",
|
27
|
-
# "Id"=>"7bdc5c6f-2000-4cd3-96f3-2a3fcb746f07",
|
28
|
-
# "Date"=>1409047251.0,
|
29
|
-
# "errors"=>nil,
|
30
|
-
# "Code"=>"500",
|
31
|
-
# "Url"=>"/v2/sdk-unit-tests/payins/3380640/refunds"}
|
32
|
-
class ResponseError < StandardError
|
33
|
-
|
34
|
-
attr_reader :request_url, :code, :details
|
35
|
-
|
36
|
-
def initialize(request_url, code, details)
|
37
|
-
@request_url = request_url
|
38
|
-
@code = code
|
39
|
-
@details = details
|
40
|
-
super(message) if message
|
41
|
-
end
|
42
|
-
|
43
|
-
def type
|
44
|
-
@details['Type'] if @details
|
45
|
-
end
|
46
|
-
|
47
|
-
def errors
|
48
|
-
@details['errors'] if @details
|
49
|
-
end
|
50
|
-
|
51
|
-
def message
|
52
|
-
return @message if @message
|
53
|
-
msg = @details ? @details['Message'] : ''
|
54
|
-
if errors && errors.is_a?(Hash)
|
55
|
-
msg += errors.sort.map { |k, v| "\n#{k}: #{v}" }.join
|
56
|
-
end
|
57
|
-
@message = msg || "#{@code} #{@details['error']}"
|
58
|
-
end
|
59
|
-
|
60
|
-
end
|
61
|
-
end
|
1
|
+
module MangoPay
|
2
|
+
|
3
|
+
# See http://docs.mangopay.com/api-references/response-codes-rules/
|
4
|
+
# and http://docs.mangopay.com/api-references/error-codes/
|
5
|
+
#
|
6
|
+
# Thrown from any MangoPay API call whenever
|
7
|
+
# it returns response with HTTP code != 200.
|
8
|
+
# Check @details hash for further info.
|
9
|
+
#
|
10
|
+
# Two example exceptions with details:
|
11
|
+
#
|
12
|
+
# * <MangoPay::ResponseError:
|
13
|
+
# One or several required parameters are missing or incorrect. [...]
|
14
|
+
# Email: The Email field is required.>
|
15
|
+
# {"Message"=>"One or several required parameters are missing or incorrect.
|
16
|
+
# An incorrect resource ID also raises this kind of error.",
|
17
|
+
# "Type"=>"param_error",
|
18
|
+
# "Id"=>"66936e92-3f21-4a35-b6cf-f1d17c2fb6e5",
|
19
|
+
# "Date"=>1409047252.0,
|
20
|
+
# "errors"=>{"Email"=>"The Email field is required."},
|
21
|
+
# "Code"=>"400",
|
22
|
+
# "Url"=>"/v2/sdk-unit-tests/users/natural"}
|
23
|
+
#
|
24
|
+
# * <MangoPay::ResponseError: Internal Server Error>
|
25
|
+
# {"Message"=>"Internal Server Error",
|
26
|
+
# "Type"=>"other",
|
27
|
+
# "Id"=>"7bdc5c6f-2000-4cd3-96f3-2a3fcb746f07",
|
28
|
+
# "Date"=>1409047251.0,
|
29
|
+
# "errors"=>nil,
|
30
|
+
# "Code"=>"500",
|
31
|
+
# "Url"=>"/v2/sdk-unit-tests/payins/3380640/refunds"}
|
32
|
+
class ResponseError < StandardError
|
33
|
+
|
34
|
+
attr_reader :request_url, :code, :details
|
35
|
+
|
36
|
+
def initialize(request_url, code, details)
|
37
|
+
@request_url = request_url
|
38
|
+
@code = code
|
39
|
+
@details = details
|
40
|
+
super(message) if message
|
41
|
+
end
|
42
|
+
|
43
|
+
def type
|
44
|
+
@details['Type'] if @details
|
45
|
+
end
|
46
|
+
|
47
|
+
def errors
|
48
|
+
@details['errors'] if @details
|
49
|
+
end
|
50
|
+
|
51
|
+
def message
|
52
|
+
return @message if @message
|
53
|
+
msg = @details ? @details['Message'] : ''
|
54
|
+
if errors && errors.is_a?(Hash)
|
55
|
+
msg += errors.sort.map { |k, v| "\n#{k}: #{v}" }.join
|
56
|
+
end
|
57
|
+
@message = msg || "#{@code} #{@details['error']}"
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
@@ -1,15 +1,15 @@
|
|
1
|
-
require_relative '../../../lib/mangopay/util/enum'
|
2
|
-
|
3
|
-
module MangoPay
|
4
|
-
|
5
|
-
# Enumeration of sorting directions available for sorting API response results
|
6
|
-
class SortDirection
|
7
|
-
extend Enum
|
8
|
-
|
9
|
-
# Ascending sort direction
|
10
|
-
ASC = value 'ASC'
|
11
|
-
|
12
|
-
# Descending sort direction
|
13
|
-
DESC = value 'DESC'
|
14
|
-
end
|
1
|
+
require_relative '../../../lib/mangopay/util/enum'
|
2
|
+
|
3
|
+
module MangoPay
|
4
|
+
|
5
|
+
# Enumeration of sorting directions available for sorting API response results
|
6
|
+
class SortDirection
|
7
|
+
extend Enum
|
8
|
+
|
9
|
+
# Ascending sort direction
|
10
|
+
ASC = value 'ASC'
|
11
|
+
|
12
|
+
# Descending sort direction
|
13
|
+
DESC = value 'DESC'
|
14
|
+
end
|
15
15
|
end
|
@@ -1,13 +1,13 @@
|
|
1
|
-
require_relative '../../../lib/mangopay/util/enum'
|
2
|
-
|
3
|
-
module MangoPay
|
4
|
-
|
5
|
-
# Available fields by which to sort API response results
|
6
|
-
class SortField
|
7
|
-
extend Enum
|
8
|
-
|
9
|
-
CREATION_DATE = value 'CreationDate'
|
10
|
-
|
11
|
-
DATE = value 'Date'
|
12
|
-
end
|
1
|
+
require_relative '../../../lib/mangopay/util/enum'
|
2
|
+
|
3
|
+
module MangoPay
|
4
|
+
|
5
|
+
# Available fields by which to sort API response results
|
6
|
+
class SortField
|
7
|
+
extend Enum
|
8
|
+
|
9
|
+
CREATION_DATE = value 'CreationDate'
|
10
|
+
|
11
|
+
DATE = value 'Date'
|
12
|
+
end
|
13
13
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
require_relative 'jsonifier'
|
2
|
-
|
3
|
-
|
4
|
-
class TemplateUrlOptions
|
5
|
-
include MangoPay::Jsonifier
|
6
|
-
|
7
|
-
# [String] URL to a SSL page
|
8
|
-
attr_accessor :payline
|
1
|
+
require_relative 'jsonifier'
|
2
|
+
|
3
|
+
|
4
|
+
class TemplateUrlOptions
|
5
|
+
include MangoPay::Jsonifier
|
6
|
+
|
7
|
+
# [String] URL to a SSL page
|
8
|
+
attr_accessor :payline
|
9
9
|
end
|
@@ -1,39 +1,39 @@
|
|
1
|
-
module MangoPay
|
2
|
-
|
3
|
-
# Top-level configuration details
|
4
|
-
class Configuration
|
5
|
-
|
6
|
-
# [true/false] True if the sandbox environment should be used
|
7
|
-
attr_accessor :preproduction
|
8
|
-
|
9
|
-
# [String] Root URL to use for requests
|
10
|
-
attr_accessor :root_url
|
11
|
-
|
12
|
-
# [String] Your client ID
|
13
|
-
attr_accessor :client_id
|
14
|
-
|
15
|
-
# [String] Your client
|
16
|
-
attr_accessor :
|
17
|
-
|
18
|
-
# [String] Path to directory in which to store authorization token
|
19
|
-
# If nil, tokens will be stored in-memory.
|
20
|
-
attr_accessor :temp_dir
|
21
|
-
|
22
|
-
# [String] Path for logging file
|
23
|
-
attr_accessor :log_dir
|
24
|
-
|
25
|
-
# [Integer] Number of milliseconds after which to timeout requests
|
26
|
-
attr_accessor :http_timeout
|
27
|
-
|
28
|
-
def initialize
|
29
|
-
self.preproduction = true
|
30
|
-
self.http_timeout = 10_000
|
31
|
-
end
|
32
|
-
|
33
|
-
def api_version
|
34
|
-
'v2.01'
|
35
|
-
end
|
36
|
-
|
37
|
-
alias preproduction? preproduction
|
38
|
-
end
|
1
|
+
module MangoPay
|
2
|
+
|
3
|
+
# Top-level configuration details
|
4
|
+
class Configuration
|
5
|
+
|
6
|
+
# [true/false] True if the sandbox environment should be used
|
7
|
+
attr_accessor :preproduction
|
8
|
+
|
9
|
+
# [String] Root URL to use for requests
|
10
|
+
attr_accessor :root_url
|
11
|
+
|
12
|
+
# [String] Your client ID
|
13
|
+
attr_accessor :client_id
|
14
|
+
|
15
|
+
# [String] Your client apiKey
|
16
|
+
attr_accessor :client_apiKey
|
17
|
+
|
18
|
+
# [String] Path to directory in which to store authorization token
|
19
|
+
# If nil, tokens will be stored in-memory.
|
20
|
+
attr_accessor :temp_dir
|
21
|
+
|
22
|
+
# [String] Path for logging file
|
23
|
+
attr_accessor :log_dir
|
24
|
+
|
25
|
+
# [Integer] Number of milliseconds after which to timeout requests
|
26
|
+
attr_accessor :http_timeout
|
27
|
+
|
28
|
+
def initialize
|
29
|
+
self.preproduction = true
|
30
|
+
self.http_timeout = 10_000
|
31
|
+
end
|
32
|
+
|
33
|
+
def api_version
|
34
|
+
'v2.01'
|
35
|
+
end
|
36
|
+
|
37
|
+
alias preproduction? preproduction
|
38
|
+
end
|
39
39
|
end
|
data/lib/mangopay/environment.rb
CHANGED
@@ -1,66 +1,66 @@
|
|
1
|
-
require_relative 'common/log_provider'
|
2
|
-
require_relative 'common/rate_limit_interval'
|
3
|
-
|
4
|
-
module MangoPay
|
5
|
-
|
6
|
-
# Holds environment-specific configuration and data.
|
7
|
-
# Allows for multiple client handling and configuration
|
8
|
-
# from within the same application.
|
9
|
-
class Environment
|
10
|
-
LOG = LogProvider.provide(self)
|
11
|
-
|
12
|
-
# [Symbol] Its identification symbol
|
13
|
-
attr_reader :id
|
14
|
-
|
15
|
-
# [Configuration] Its MangoPay configuration details
|
16
|
-
attr_accessor :configuration
|
17
|
-
|
18
|
-
# [Hash] Counts of the requests sent to the API per time interval
|
19
|
-
attr_accessor :rate_limit_count
|
20
|
-
|
21
|
-
# [Hash] Number of remaining possible calls to be made per time interval
|
22
|
-
attr_accessor :rate_limit_remaining
|
23
|
-
|
24
|
-
# [Hash] UNIX times at which counts will be reset per time interval
|
25
|
-
attr_accessor :rate_limit_reset
|
26
|
-
|
27
|
-
def initialize(id)
|
28
|
-
@id = id
|
29
|
-
@rate_limit_count = {}
|
30
|
-
@rate_limit_remaining = {}
|
31
|
-
@rate_limit_reset = {}
|
32
|
-
end
|
33
|
-
|
34
|
-
# Updates the rate limit data based on headers from API.
|
35
|
-
#
|
36
|
-
# noinspection RubyResolve
|
37
|
-
def update_rate_limits(rate_limits)
|
38
|
-
rate_limits['x-ratelimit'].each.with_index do |count, index|
|
39
|
-
@rate_limit_count[time_interval(index)] = count
|
40
|
-
end
|
41
|
-
rate_limits['x-ratelimit-remaining'].each.with_index do |remain, index|
|
42
|
-
@rate_limit_remaining[time_interval(index)] = remain
|
43
|
-
end
|
44
|
-
rate_limits['x-ratelimit-reset'].each.with_index do |reset, index|
|
45
|
-
@rate_limit_reset[time_interval(index)] = reset
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
# Asserts the time interval corresponding to each index
|
50
|
-
# of the values returned in API headers.
|
51
|
-
def time_interval(index)
|
52
|
-
case index
|
53
|
-
when 0
|
54
|
-
RateLimitInterval::FIFTEEN_MIN
|
55
|
-
when 1
|
56
|
-
RateLimitInterval::THIRTY_MIN
|
57
|
-
when 2
|
58
|
-
RateLimitInterval::HOUR
|
59
|
-
when 3
|
60
|
-
RateLimitInterval::DAY
|
61
|
-
else
|
62
|
-
LOG.warn 'Unexpected rate limit time interval count'
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
1
|
+
require_relative 'common/log_provider'
|
2
|
+
require_relative 'common/rate_limit_interval'
|
3
|
+
|
4
|
+
module MangoPay
|
5
|
+
|
6
|
+
# Holds environment-specific configuration and data.
|
7
|
+
# Allows for multiple client handling and configuration
|
8
|
+
# from within the same application.
|
9
|
+
class Environment
|
10
|
+
LOG = LogProvider.provide(self)
|
11
|
+
|
12
|
+
# [Symbol] Its identification symbol
|
13
|
+
attr_reader :id
|
14
|
+
|
15
|
+
# [Configuration] Its MangoPay configuration details
|
16
|
+
attr_accessor :configuration
|
17
|
+
|
18
|
+
# [Hash] Counts of the requests sent to the API per time interval
|
19
|
+
attr_accessor :rate_limit_count
|
20
|
+
|
21
|
+
# [Hash] Number of remaining possible calls to be made per time interval
|
22
|
+
attr_accessor :rate_limit_remaining
|
23
|
+
|
24
|
+
# [Hash] UNIX times at which counts will be reset per time interval
|
25
|
+
attr_accessor :rate_limit_reset
|
26
|
+
|
27
|
+
def initialize(id)
|
28
|
+
@id = id
|
29
|
+
@rate_limit_count = {}
|
30
|
+
@rate_limit_remaining = {}
|
31
|
+
@rate_limit_reset = {}
|
32
|
+
end
|
33
|
+
|
34
|
+
# Updates the rate limit data based on headers from API.
|
35
|
+
#
|
36
|
+
# noinspection RubyResolve
|
37
|
+
def update_rate_limits(rate_limits)
|
38
|
+
rate_limits['x-ratelimit'].each.with_index do |count, index|
|
39
|
+
@rate_limit_count[time_interval(index)] = count
|
40
|
+
end
|
41
|
+
rate_limits['x-ratelimit-remaining'].each.with_index do |remain, index|
|
42
|
+
@rate_limit_remaining[time_interval(index)] = remain
|
43
|
+
end
|
44
|
+
rate_limits['x-ratelimit-reset'].each.with_index do |reset, index|
|
45
|
+
@rate_limit_reset[time_interval(index)] = reset
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
# Asserts the time interval corresponding to each index
|
50
|
+
# of the values returned in API headers.
|
51
|
+
def time_interval(index)
|
52
|
+
case index
|
53
|
+
when 0
|
54
|
+
RateLimitInterval::FIFTEEN_MIN
|
55
|
+
when 1
|
56
|
+
RateLimitInterval::THIRTY_MIN
|
57
|
+
when 2
|
58
|
+
RateLimitInterval::HOUR
|
59
|
+
when 3
|
60
|
+
RateLimitInterval::DAY
|
61
|
+
else
|
62
|
+
LOG.warn 'Unexpected rate limit time interval count'
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
66
|
end
|