module Nibo::ApiResource

Constants

BASE_URL

Public Class Methods

included(base) click to toggle source
# File lib/nibo/api_resource.rb, line 42
def self.included(base)
  base.extend(ApiResource)
end

Public Instance Methods

api_request(url, method, params = nil) click to toggle source
# 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) click to toggle source
# File lib/nibo/api_resource.rb, line 9
def encode(params)
  params.map { |k,v| "#{k}=#{url_encode(v)}" }.join('&')
end
url_encode(key) click to toggle source
# File lib/nibo/api_resource.rb, line 5
def url_encode(key)
  URI.escape(key.to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
end