Module: Plaid
- Defined in:
- lib/zen-plaid.rb,
lib/zen-plaid/auth.rb,
lib/zen-plaid/util.rb,
lib/zen-plaid/entity.rb,
lib/zen-plaid/balance.rb,
lib/zen-plaid/connect.rb,
lib/zen-plaid/version.rb,
lib/zen-plaid/category.rb,
lib/zen-plaid/institution.rb,
lib/zen-plaid/configuration.rb
Defined Under Namespace
Modules: Util
Classes: Auth, Balance, Category, Configuration, Connect, Entity, Institution
Constant Summary
collapse
- VERSION =
'0.0.4'
Class Attribute Summary collapse
Class Method Summary
collapse
Class Attribute Details
.configuration ⇒ Object
Returns the value of attribute configuration.
3
4
5
|
# File 'lib/zen-plaid/configuration.rb', line 3
def configuration
@configuration
end
|
Class Method Details
.api_base ⇒ Object
40
41
42
43
44
45
46
|
# File 'lib/zen-plaid.rb', line 40
def self.api_base
if Plaid.configuration.environment == 'production'
'https://api.plaid.com/'
else
'https://tartan.plaid.com/'
end
end
|
.api_url(url = '') ⇒ Object
36
37
38
|
# File 'lib/zen-plaid.rb', line 36
def self.api_url(url='')
api_base + url
end
|
10
11
12
|
# File 'lib/zen-plaid/configuration.rb', line 10
def self.configure
yield(configuration)
end
|
.handle_api_error(rcode, rbody) ⇒ Object
22
23
24
25
26
|
# File 'lib/zen-plaid.rb', line 22
def self.handle_api_error(rcode, rbody)
error_obj = Util.symbolize_names(Oj.load(rbody))
{code: rcode, error: error_obj}
end
|
.parse(response) ⇒ Object
28
29
30
31
32
33
34
|
# File 'lib/zen-plaid.rb', line 28
def self.parse(response)
begin
response = Util.symbolize_names(Oj.load(response.body))
rescue Oj::ParseError
raise general_api_error(response.code, response.body)
end
end
|
.request(method, url, params = {}, headers = {}) ⇒ Object
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
# File 'lib/zen-plaid.rb', line 48
def self.request(method, url, params={}, ={})
request_opts = { verify_ssl: false }
url = api_url(url)
params = params.merge!(auth)
case method.to_s.downcase.to_sym
when :get, :head, :delete
url += "#{URI.parse(url).query ? '&' : '?'}#{uri_encode(params)}" if params && params.any?
payload = nil
else
payload = uri_encode(params)
end
request_opts.update(headers: ,
method: method,
open_timeout: 30,
payload: payload,
url: url,
timeout: 80)
begin
response = RestClient::Request.execute(request_opts)
log_message = Oj.dump(request_opts.merge!({response: response}))
Plaid.configuration.logger.info log_message
return {code: response.code, message: parse(response)}
rescue RestClient::ExceptionWithResponse => e
return handle_api_error(e.http_code, e.http_body)
end
end
|
.uri_encode(params) ⇒ Object
17
18
19
20
|
# File 'lib/zen-plaid.rb', line 17
def self.uri_encode(params)
Util.flatten_params(params).
map { |k,v| "#{k}=#{Util.url_encode(v)}" }.join('&')
end
|