diff --git a/lib/geocoder/lookups/base.rb b/lib/geocoder/lookups/base.rb index 2db8d11e7b0ff31fff3013dcd531a4ad15bd4dab..33fc8b644cd25a8f547f3cee2f23217969b1d4a3 100644 --- a/lib/geocoder/lookups/base.rb +++ b/lib/geocoder/lookups/base.rb @@ -154,26 +154,34 @@ module Geocoder end ## - # Fetches a raw search result (JSON string). + # Fetch a raw geocoding result (JSON string). + # The result might or might not be cached. # def fetch_raw_data(query) - timeout(Geocoder::Configuration.timeout) do - url = query_url(query) - uri = URI.parse(url) - key = cache_key(query) - if cache and body = cache[key] - @cache_hit = true - else - client = http_client.new(uri.host, uri.port) - client.use_ssl = true if Geocoder::Configuration.use_https - response = client.get(uri.request_uri, Geocoder::Configuration.http_headers) - body = response.body - if cache and (200..399).include?(response.code.to_i) - cache[key] = body - end - @cache_hit = false + key = cache_key(query) + if cache and body = cache[key] + @cache_hit = true + else + response = make_api_request(query) + body = response.body + if cache and (200..399).include?(response.code.to_i) + cache[key] = body end - body + @cache_hit = false + end + body + end + + ## + # Make an HTTP(S) request to a geocoding API and + # return the response object. + # + def make_api_request(query) + timeout(Geocoder::Configuration.timeout) do + uri = URI.parse(query_url(query)) + client = http_client.new(uri.host, uri.port) + client.use_ssl = true if Geocoder::Configuration.use_https + client.get(uri.request_uri, Geocoder::Configuration.http_headers) end end