class Realeyes::Connection
Attributes
config[R]
Public Class Methods
new(config)
click to toggle source
# File lib/realeyes/connection.rb, line 10 def initialize(config) config[:base_url] ||= "http://reportingapi.realeyesit.com/api/v1/" config[:signature_lifetime] ||= 60 @config = config end
Public Instance Methods
get(api_method, params={})
click to toggle source
# File lib/realeyes/connection.rb, line 16 def get api_method, params={} Net::HTTP.get_response(request_uri('get', api_method, params)) end
post(api_method, body={})
click to toggle source
# File lib/realeyes/connection.rb, line 20 def post api_method, body={}, params={} uri = request_uri('post', api_method, params) request = Net::HTTP::Post.new(uri.request_uri, {'Content-Type' => 'application/json'}) request.body = body.to_json Net::HTTP.new(uri.host, uri.port).request(request) end
request_uri(http_method, api_method, params={})
click to toggle source
# File lib/realeyes/connection.rb, line 27 def request_uri http_method, api_method, params={} uri = URI.parse(config[:base_url] + api_method) uri.query = URI.encode_www_form(params.merge(additional_params).to_a) URI.parse "#{uri.to_s}&Signature=#{signature(http_method, uri.to_s)}" end
Private Instance Methods
additional_params()
click to toggle source
# File lib/realeyes/connection.rb, line 35 def additional_params { "AccessKey" => config[:access_key], "Expiration" => Time.now.to_i + config[:signature_lifetime] } end
signature(http_method, url)
click to toggle source
# File lib/realeyes/connection.rb, line 42 def signature http_method, url encodable = [http_method.upcase, url].join(':') sig = Base64.encode64(OpenSSL::HMAC.digest('sha1', config[:secret_key], encodable)) CGI.escape(sig.delete("\n")) end