module Gistance::Request
Methods for HTTP requests
Public Instance Methods
get(options={})
click to toggle source
Make a HTTP GET request.
@param path [String] The path, relative to api_endpoint @param options [Hash] query params for request @return [Hashie::Mash]
# File lib/gistance/request.rb, line 12 def get(options={}) request(:get, options) end
Private Instance Methods
assign_api_key_to_request(request)
click to toggle source
# File lib/gistance/request.rb, line 32 def assign_api_key_to_request(request) if self.business request.params[:client] = business[:client_id] request.params[:channel] = business[:channel] if business[:channel] request.params[:signature] = generate_signature_for_request(request) else request.params[:key] = self.api_key if self.api_key end end
generate_signature_for_request(request)
click to toggle source
# File lib/gistance/request.rb, line 42 def generate_signature_for_request(request) digest = OpenSSL::Digest.new('sha1') raw_private_key = url_safe_base64_decode(self.api_key) normalized_path = normalize_request_path(request) raw_signature = OpenSSL::HMAC.digest(digest, raw_private_key, normalized_path) url_safe_base64_encode(raw_signature) end
normalize_request_path(request)
click to toggle source
# File lib/gistance/request.rb, line 60 def normalize_request_path(request) request.to_env(connection)[:url].to_s.gsub('https://maps.googleapis.com', '') end
request(method, options)
click to toggle source
# File lib/gistance/request.rb, line 18 def request(method, options) response = connection.send(method) do |request| [:language, :units, :sensor].each do |option| request.params[option] = options.delete(option) || self.public_send(option) end request.url(self.api_endpoint, options) assign_api_key_to_request(request) end response.body end
url_safe_base64_decode(base64_string)
click to toggle source
# File lib/gistance/request.rb, line 52 def url_safe_base64_decode(base64_string) Base64.decode64(base64_string.tr('-_', '+/')) end
url_safe_base64_encode(raw)
click to toggle source
# File lib/gistance/request.rb, line 56 def url_safe_base64_encode(raw) Base64.encode64(raw).tr('+/', '-_').strip end