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.12.0'
Class Method Summary
collapse
Class Method Details
.api_path ⇒ Object
75
76
77
|
# File 'lib/mangopay.rb', line 75
def api_path
"/#{version_code}/#{MangoPay.configuration.client_id}"
end
|
.api_path_no_client ⇒ Object
79
80
81
|
# File 'lib/mangopay.rb', line 79
def api_path_no_client
"/#{version_code}"
end
|
.api_uri(url = '') ⇒ Object
83
84
85
|
# File 'lib/mangopay.rb', line 83
def api_uri(url='')
URI(configuration.root_url + url)
end
|
.configuration ⇒ Object
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
87
88
89
90
|
# File 'lib/mangopay.rb', line 87
def configuration=(value)
Thread.current[:mangopay_configuration] = value
@last_configuration_set = value
end
|
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
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
115
116
117
|
# File 'lib/mangopay.rb', line 115
def ratelimit
@ratelimit
end
|
.ratelimit=(obj) ⇒ Object
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.
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
71
72
73
|
# File 'lib/mangopay.rb', line 71
def version_code
"v2.01"
end
|
.with_configuration(config) ⇒ Object