Module: MangoPay
- Defined in:
- lib/mangopay/json.rb,
lib/mangopay.rb,
lib/mangopay/ubo.rb,
lib/mangopay/card.rb,
lib/mangopay/hook.rb,
lib/mangopay/user.rb,
lib/mangopay/event.rb,
lib/mangopay/client.rb,
lib/mangopay/errors.rb,
lib/mangopay/pay_in.rb,
lib/mangopay/refund.rb,
lib/mangopay/report.rb,
lib/mangopay/wallet.rb,
lib/mangopay/deposit.rb,
lib/mangopay/dispute.rb,
lib/mangopay/mandate.rb,
lib/mangopay/pay_out.rb,
lib/mangopay/version.rb,
lib/mangopay/resource.rb,
lib/mangopay/transfer.rb,
lib/mangopay/http_calls.rb,
lib/mangopay/legal_user.rb,
lib/mangopay/regulatory.rb,
lib/mangopay/transaction.rb,
lib/mangopay/bank_account.rb,
lib/mangopay/kyc_document.rb,
lib/mangopay/natural_user.rb,
lib/mangopay/bankingaliases.rb,
lib/mangopay/ubo_declaration.rb,
lib/mangopay/card_registration.rb,
lib/mangopay/filter_parameters.rb,
lib/mangopay/pre_authorization.rb,
lib/mangopay/authorization_token.rb,
lib/mangopay/bankingaliases_iban.rb more...
Overview
We can use MultiJson directly , why do we even have this module ?
Defined Under Namespace
Modules: AuthorizationToken, FilterParameters, HTTPCalls, JSON
Classes: BankAccount, BankingAliases, BankingAliasesIBAN, Card, CardRegistration, Client, Configuration, Deposit, Dispute, Error, Event, Hook, KycDocument, LegalUser, Mandate, NaturalUser, PayIn, PayOut, PreAuthorization, Refund, Regulatory, Report, Resource, ResponseError, Transaction, Transfer, Ubo, UboDeclaration, User, Wallet
Constant Summary
collapse
- VERSION =
'3.12.0'
Class Method Summary
collapse
Class Method Details
.api_path_no_client ⇒ Object
[View source]
79
80
81
|
# File 'lib/mangopay.rb', line 79
def api_path_no_client
"/#{version_code}"
end
|
.api_uri(url = '') ⇒ Object
[View source]
83
84
85
|
# File 'lib/mangopay.rb', line 83
def api_uri(url='')
URI(configuration.root_url + url)
end
|
.configuration ⇒ Object
[View source]
92
93
94
95
96
97
98
99
|
# File 'lib/mangopay.rb', line 92
def configuration
config = Thread.current[:mangopay_configuration]
config ||
( @last_configuration_set &&
(self.configuration = @last_configuration_set.dup)) ||
(self.configuration = MangoPay::Configuration.new)
end
|
.configuration=(value) ⇒ Object
[View source]
87
88
89
90
|
# File 'lib/mangopay.rb', line 87
def configuration=(value)
Thread.current[:mangopay_configuration] = value
@last_configuration_set = value
end
|
[View source]
101
102
103
104
105
|
# File 'lib/mangopay.rb', line 101
def configure
config = self.configuration
yield config
self.configuration = config
end
|
.fetch_response(idempotency_key) ⇒ Object
[View source]
178
179
180
181
|
# File 'lib/mangopay.rb', line 178
def fetch_response(idempotency_key)
url = "#{api_path}/responses/#{idempotency_key}"
request(:get, url)
end
|
.ratelimit ⇒ Object
[View source]
115
116
117
|
# File 'lib/mangopay.rb', line 115
def ratelimit
@ratelimit
end
|
.ratelimit=(obj) ⇒ Object
[View source]
119
120
121
|
# File 'lib/mangopay.rb', line 119
def ratelimit=(obj)
@ratelimit = obj
end
|
.request(method, url, params = {}, filters = {}, headers_or_idempotency_key = nil, before_request_proc = nil) ⇒ Object
-
method
: HTTP method; lowercase symbol, e.g. :get, :post etc.
-
url
: the part after Configuration#root_url
-
params
: hash; entity data for creation, update etc.; will dump it by JSON and assign to Net::HTTPRequest#body
-
filters
: hash; pagination params etc.; will encode it by URI and assign to URI#query
-
headers_or_idempotency_key
: hash of headers; or replaced by request_headers if nil; or added to request_headers as idempotency key otherwise (see docs.mangopay.com/api-references/idempotency-support/)
-
before_request_proc
: optional proc; will call it passing the Net::HTTPRequest instance just before Net::HTTPRequest#request
Raises MangoPay::ResponseError if response code != 200.
[View source]
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
|
# File 'lib/mangopay.rb', line 133
def request(method, url, params={}, filters={}, = nil, before_request_proc = nil)
uri = api_uri(url)
uri.query = URI.encode_www_form(filters) unless filters.empty?
if .is_a?(Hash)
=
else
=
['Idempotency-Key'] = if != nil
end
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true, :read_timeout => configuration.http_timeout, ssl_version: :TLSv1_2) do |http|
req = Net::HTTP::const_get(method.capitalize).new(uri.request_uri, )
req.body = JSON.dump(params)
before_request_proc.call(req) if before_request_proc
do_request(http, req, uri)
end
raise MangoPay::ResponseError.new(uri, '408', {'Message' => 'Request Timeout'}) if res.nil?
data = res.body.to_s.empty? ? {} : JSON.load(res.body.to_s)
unless res.is_a?(Net::HTTPOK)
raise MangoPay::ResponseError.new(uri, res.code, data)
end
['x-number-of-pages', 'x-number-of-items'].each { |k|
filters[k.gsub('x-number-of-', 'total_')] = res[k].to_i if res[k]
}
if res['x-ratelimit']
self.ratelimit = {
limit: res['x-ratelimit'].split(", "),
remaining: res['x-ratelimit-remaining'].split(", "),
reset: res['x-ratelimit-reset'].split(", ")
}
end
data
end
|
.version_code ⇒ Object
[View source]
71
72
73
|
# File 'lib/mangopay.rb', line 71
def version_code
"v2.01"
end
|