lib/google_timezone/base.rb in google_timezone-0.0.3 vs lib/google_timezone/base.rb in google_timezone-0.0.4

- old
+ new

@@ -4,20 +4,21 @@ module GoogleTimezone class Error < StandardError; end class Base - @allowed_params = [:language, :sensor, :timestamp, :client, :signature, :key] + ALLOWED_PARAMS = [:language, :sensor, :timestamp, :client, :signature, :key] def initialize(*args) @lat, @lon = if args.first.is_a? Array args.first else args[0..1] end + @options = extract_options!(args) - @options.reject! { |key, value| !@allowed_params.include? key } + @options.reject! { |key, _| !ALLOWED_PARAMS.include?(key) } end def fetch location = [@lat, @lon].join(',') params = { location: location, sensor: false, timestamp: Time.now.to_i }.merge(@options) @@ -30,25 +31,23 @@ raise(GoogleTimezone::Error.new(result.result)) unless result.success? result end private + def hash_to_query(hash) - require 'cgi' unless defined?(CGI) && defined?(CGI.escape) - hash.collect{ |p| - p[1].nil? ? nil : p.map{ |i| CGI.escape i.to_s } * '=' - }.compact.sort * '&' + hash.collect { |key, val| "#{key}=#{val}" }.join('&') end def url(params) "https://maps.googleapis.com/maps/api/timezone/json?#{hash_to_query(params)}" end - def extract_options!(*args) - args.last.is_a?(::Hash) ? pop : {} + def extract_options!(args) + args.last.is_a?(::Hash) ? args.pop : {} end def get_result(params) open(url(params)) { |r| JSON.parse(r.read) } end end -end \ No newline at end of file +end