module RelateIQ

Attributes

api_key[RW]
api_secret[RW]
base_url[RW]
version[RW]

Public Class Methods

configure(params) click to toggle source
# File lib/relateiq.rb, line 18
def configure(params)
  raise ArgumentError, "You must include both the api_key and api_secret" unless (params.include?(:api_key) && params.include?(:api_secret))
  @api_key = params[:api_key]
  @api_secret = params[:api_secret]
  @base_url = params[:base_url]

  @version = 'v1'
  @version = params[:version] if params[:version]

  true
end
delete(string) click to toggle source
# File lib/relateiq.rb, line 43
def delete(string)
  request :delete, uri(string)
end
get(string, params = {}) click to toggle source
# File lib/relateiq.rb, line 30
def get(string, params = {})
  string += "#{URI.parse(string).query ? '&' : '?'}#{uri_encode(params)}" if params && params.any?
  request :get, uri(string)
end
post(string, params={}) click to toggle source
# File lib/relateiq.rb, line 35
def post(string, params={})
  request :post, uri(string), params
end
put(string, params={}) click to toggle source
# File lib/relateiq.rb, line 39
def put(string, params={})
  request :put, uri(string), params
end

Private Class Methods

request(method,*args) click to toggle source
# File lib/relateiq.rb, line 60
def request(method,*args)
  conn = Faraday.new(:url => @base_url) do |faraday|
    # faraday.response :logger
    faraday.request :json
    faraday.response :json, :content_type => /\bjson$/
    faraday.use :instrumentation
    faraday.adapter Faraday.default_adapter
  end
  conn.basic_auth(@api_key, @api_secret)
  conn.headers.update({'Content-Type' => 'application/json'})

  res = conn.send method.to_sym, *args

  case res.status
    when 401
      raise "Invalid credentials"
    when 400...599
      if res.body.include? 'error'
        raise [res.body['error'], *args].join(' ')
      else
        #raise 'Unknown error'
        raise [res.body, *args].join(' ')
      end
    else
      res.body
  end
end
uri(string) click to toggle source
# File lib/relateiq.rb, line 56
def uri(string)
  string
end
uri_encode(params = {}) click to toggle source
# File lib/relateiq.rb, line 48
def uri_encode(params = {})
  params.map { |k,v| "#{k}=#{url_encode(v)}" }.join('&')
end
url_encode(key) click to toggle source
# File lib/relateiq.rb, line 52
def url_encode(key)
  URI.escape(key.to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
end