Module: Nibo::ApiResource
- Included in:
- Account, Category, Entity, Entry, Schedule
- Defined in:
- lib/nibo/api_resource.rb,
lib/nibo/api_resource/list.rb,
lib/nibo/api_resource/create.rb,
lib/nibo/api_resource/delete.rb,
lib/nibo/api_resource/retrieve.rb
Defined Under Namespace
Modules: Create, Delete, List, Retrieve
Constant Summary
collapse
- BASE_URL =
'https://api.nibo.com.br/public/v1'
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.included(base) ⇒ Object
42
43
44
|
# File 'lib/nibo/api_resource.rb', line 42
def self.included(base)
base.extend(ApiResource)
end
|
Instance Method Details
#api_request(url, method, params = nil) ⇒ Object
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/nibo/api_resource.rb', line 13
def api_request(url, method, params = nil)
time_stamp = Time.now.utc.strftime('%Y%m%d%H%M')
url = "#{BASE_URL}#{url}"
= {authorization: "Basic #{Base64.strict_encode64("#{Nibo.api_key}:#{Nibo.generate_hash(time_stamp)}")}",
Timestamp: time_stamp,
User: Nibo.user,
content_type: 'application/json',
accept: 'application/json'}
if (method == :get or method == :delete) && params
params_encoded = encode(params)
url = "#{url}?#{params_encoded}"
params = nil
end
response = case method
when :get
RestClient.get(url, )
when :post
RestClient.post(url, params.to_json, )
when :delete
RestClient.delete(url, )
{}.to_json
end
result = JSON.parse(response)
(result.is_a? Hash) ? result.deep_symbolize_keys : result.map {|object| object.deep_symbolize_keys}
end
|
#encode(params) ⇒ Object
9
10
11
|
# File 'lib/nibo/api_resource.rb', line 9
def encode(params)
params.map { |k,v| "#{k}=#{url_encode(v)}" }.join('&')
end
|
#url_encode(key) ⇒ Object
5
6
7
|
# File 'lib/nibo/api_resource.rb', line 5
def url_encode(key)
URI.escape(key.to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
end
|