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
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.17.0'
Class Method Summary
collapse
Class Method Details
.api_path ⇒ Object
92
93
94
|
# File 'lib/mangopay.rb', line 92
def api_path
"/#{version_code}/#{MangoPay.configuration.client_id}"
end
|
.api_path_no_client ⇒ Object
96
97
98
|
# File 'lib/mangopay.rb', line 96
def api_path_no_client
"/#{version_code}"
end
|
.api_uri(url = '') ⇒ Object
100
101
102
|
# File 'lib/mangopay.rb', line 100
def api_uri(url='')
URI(configuration.root_url + url)
end
|
.configuration ⇒ Object
109
110
111
112
113
114
115
116
|
# File 'lib/mangopay.rb', line 109
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
104
105
106
107
|
# File 'lib/mangopay.rb', line 104
def configuration=(value)
Thread.current[:mangopay_configuration] = value
@last_configuration_set = value
end
|
118
119
120
121
122
|
# File 'lib/mangopay.rb', line 118
def configure
config = self.configuration
yield config
self.configuration = config
end
|
.fetch_response(idempotency_key) ⇒ Object
197
198
199
200
|
# File 'lib/mangopay.rb', line 197
def fetch_response(idempotency_key)
url = "#{api_path}/responses/#{idempotency_key}"
request(:get, url)
end
|
.ratelimit ⇒ Object
132
133
134
|
# File 'lib/mangopay.rb', line 132
def ratelimit
@ratelimit
end
|
.ratelimit=(obj) ⇒ Object
136
137
138
|
# File 'lib/mangopay.rb', line 136
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.
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
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
|
# File 'lib/mangopay.rb', line 150
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 => configuration.use_ssl?, :read_timeout => configuration.http_timeout,
:max_retries => configuration.http_max_retries,
:open_timeout => configuration.http_open_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
88
89
90
|
# File 'lib/mangopay.rb', line 88
def version_code
"v2.01"
end
|
.with_configuration(config) ⇒ Object