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