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/instant_conversion.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, InstantConversion, KycDocument, LegalUser, Mandate, NaturalUser, PayIn, PayOut, PreAuthorization, Refund, Regulatory, Report, Resource, ResponseError, Transaction, Transfer, Ubo, UboDeclaration, User, Wallet
Constant Summary
collapse
- VERSION =
'3.19.0'
Class Method Summary
collapse
Class Method Details
.api_path ⇒ Object
93
94
95
|
# File 'lib/mangopay.rb', line 93
def api_path
"/#{version_code}/#{MangoPay.configuration.client_id}"
end
|
.api_path_no_client ⇒ Object
97
98
99
|
# File 'lib/mangopay.rb', line 97
def api_path_no_client
"/#{version_code}"
end
|
.api_uri(url = '') ⇒ Object
101
102
103
|
# File 'lib/mangopay.rb', line 101
def api_uri(url='')
URI(configuration.root_url + url)
end
|
.configuration ⇒ Object
110
111
112
113
114
115
116
117
|
# File 'lib/mangopay.rb', line 110
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
105
106
107
108
|
# File 'lib/mangopay.rb', line 105
def configuration=(value)
Thread.current[:mangopay_configuration] = value
@last_configuration_set = value
end
|
119
120
121
122
123
|
# File 'lib/mangopay.rb', line 119
def configure
config = self.configuration
yield config
self.configuration = config
end
|
.fetch_response(idempotency_key) ⇒ Object
198
199
200
201
|
# File 'lib/mangopay.rb', line 198
def fetch_response(idempotency_key)
url = "#{api_path}/responses/#{idempotency_key}"
request(:get, url)
end
|
.ratelimit ⇒ Object
133
134
135
|
# File 'lib/mangopay.rb', line 133
def ratelimit
@ratelimit
end
|
.ratelimit=(obj) ⇒ Object
137
138
139
|
# File 'lib/mangopay.rb', line 137
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.
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
194
|
# File 'lib/mangopay.rb', line 151
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
89
90
91
|
# File 'lib/mangopay.rb', line 89
def version_code
"v2.01"
end
|
.with_configuration(config) ⇒ Object