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://legacy-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}"
  headers = {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, headers)
      when :post
        RestClient.post(url, params.to_json, headers)
      when :delete
        RestClient.delete(url, headers)
        {}.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