Sha256: 6dec3f7eb41498892b994b0bf30621312f6610ed59208e95591d3360409e46de
Contents?: true
Size: 1.27 KB
Versions: 2
Compression:
Stored size: 1.27 KB
Contents
require 'openssl' require 'base64' require 'geocoder2/lookups/google' require 'geocoder2/results/google_premier' module Geocoder2::Lookup class GooglePremier < Google def name "Google Premier" end def required_api_key_parts ["private key", "client", "channel"] end def query_url(query) path = "/maps/api/geocode/json?" + url_query_string(query) "#{protocol}://maps.googleapis.com#{path}&signature=#{sign(path)}" end private # --------------------------------------------------------------- def query_url_params(query) query_url_google_params(query).merge(super).merge( :key => nil, # don't use param inherited from Google lookup :client => configuration.api_key[1], :channel => configuration.api_key[2] ) end def sign(string) raw_private_key = url_safe_base64_decode(configuration.api_key[0]) digest = OpenSSL::Digest::Digest.new('sha1') raw_signature = OpenSSL::HMAC.digest(digest, raw_private_key, string) url_safe_base64_encode(raw_signature) end def url_safe_base64_decode(base64_string) Base64.decode64(base64_string.tr('-_', '+/')) end def url_safe_base64_encode(raw) Base64.encode64(raw).tr('+/', '-_').strip end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
geocoder2-0.1.1 | lib/geocoder2/lookups/google_premier.rb |
geocoder2-0.1.0 | lib/geocoder2/lookups/google_premier.rb |