diff --git a/lib/geocoder/lookup.rb b/lib/geocoder/lookup.rb index 27b88d914503226659ea042cde93b463f0d594ae..b173cbb2365e74c8fb0d965f0451ffed2d7d9c58 100644 --- a/lib/geocoder/lookup.rb +++ b/lib/geocoder/lookup.rb @@ -10,7 +10,7 @@ module Geocoder # def coordinates(address) return nil if address.blank? - return nil unless doc = search(address, false) + return nil unless doc = fetch_parsed_response(address, false) # blindly use first result (assume it is most accurate) place = doc['results'].first['geometry']['location'] ['lat', 'lng'].map{ |i| place[i] } @@ -22,19 +22,17 @@ module Geocoder # def address(latitude, longitude) return nil if latitude.blank? || longitude.blank? - return nil unless doc = search("#{latitude},#{longitude}", true) + return nil unless doc = fetch_parsed_response("#{latitude},#{longitude}", true) # blindly use first result (assume it is most accurate) doc['results'].first['formatted_address'] end ## # Query Google for geographic information about the given phrase. - # Returns a hash representing a valid, parsed geocoder response. - # Returns nil if non-200 HTTP response, timeout, or other error. + # Returns a Result object containing all data returned by Google. # def search(query, reverse = false) - doc = fetch_parsed_response(query, reverse) - doc && doc['status'] == "OK" ? doc : nil + # TODO end @@ -42,17 +40,17 @@ module Geocoder ## # Returns a parsed Google geocoder search result (hash). - # This method is not intended for general use (prefer Geocoder.search). + # Returns nil if non-200 HTTP response, timeout, or other error. # def fetch_parsed_response(query, reverse = false) if doc = fetch_raw_response(query, reverse) - ActiveSupport::JSON.decode(doc) + doc = ActiveSupport::JSON.decode(doc) + doc && doc['status'] == "OK" ? doc : nil end end ## # Returns a raw Google geocoder search result (JSON). - # This method is not intended for general use (prefer Geocoder.search). # def fetch_raw_response(query, reverse = false) return nil if query.blank?