From 72aef14c8b4b1be0b9308b0456dfbb999d5cb96e Mon Sep 17 00:00:00 2001 From: Alex Reisner <alex@alexreisner.com> Date: Wed, 7 Nov 2012 20:01:10 -0500 Subject: [PATCH] Separate HTTP request code from caching code. --- lib/geocoder/lookups/base.rb | 42 +++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/lib/geocoder/lookups/base.rb b/lib/geocoder/lookups/base.rb index 2db8d11e..33fc8b64 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 -- GitLab