module Duedil::Client

Attributes

api_key[RW]
base_url[RW]
locale[RW]
sandbox[RW]
version[RW]

Public Class Methods

new(options = {}) click to toggle source
# File lib/duedil/client.rb, line 15
def initialize(options = {})
  @api_key  = options.delete(:api_key)
  @version  = options.delete(:version)
  @base_url = options.delete(:base_url)
  @sandbox  = options.delete(:sandbox).present?
  @locale   = options.delete(:locale) || 'uk'
  @http     = options.delete(:http) || Net::HTTP
end

Private Instance Methods

base_path() click to toggle source
# File lib/duedil/client.rb, line 26
def base_path
  @base_path ||= begin
    path = "/#{version}"
    path += "/sandbox" if sandbox
    path += "/#{locale}"
    path
  end
end
escape(value) click to toggle source
# File lib/duedil/client.rb, line 57
def escape(value)
  CGI.escape value.to_s
end
path(endpoint) click to toggle source
# File lib/duedil/client.rb, line 35
def path(endpoint)
  "#{base_path}/#{endpoint}"
end
request(path, params = {}) click to toggle source
# File lib/duedil/client.rb, line 39
def request(path, params = {})
  request_uri = request_uri(path, params.merge(:api_key => api_key))
  response = @http.get_response(base_url, request_uri)
  Response.new(response)
end
request_uri(path, hash = {}) click to toggle source
# File lib/duedil/client.rb, line 45
def request_uri(path, hash = {})
  query_params = hash.map do |key, value|
    if value.is_a? Hash
      "#{escape(key)}=#{escape(value.to_json)}"
    else
      "#{escape(key)}=#{escape(value)}"
    end
  end

  path + '?' + query_params.flatten.join('&')
end