class GeocodingLite::GeocodingService
Constants
- SERVICE_URL
Public Class Methods
new(http_object = nil, uri_object = nil, service_url = nil, json_parser = nil)
click to toggle source
# File lib/geocoding_lite/geocoding_service.rb, line 9 def initialize(http_object = nil, uri_object = nil, service_url = nil, json_parser = nil) @http_object = http_object || Net::HTTP @uri_object = uri_object || URI @json_parser = json_parser || JSON @service_url = service_url || SERVICE_URL end
Public Instance Methods
lookup(location)
click to toggle source
# File lib/geocoding_lite/geocoding_service.rb, line 16 def lookup(location) load_response(send_request(location)) end
Private Instance Methods
load_response(raw_response)
click to toggle source
# File lib/geocoding_lite/geocoding_service.rb, line 22 def load_response(raw_response) json = @json_parser.parse(raw_response) status = json['status'] raise RuntimeError, "API returned #{status}" if status != 'OK' && status != 'ZERO_RESULTS' json['results'].reduce([]) do |output, result| output << { :address => result['formatted_address'], :lat => result['geometry']['location']['lat'], :lng => result['geometry']['location']['lng'], :types => result['types'] } end end
prepare_params(location)
click to toggle source
# File lib/geocoding_lite/geocoding_service.rb, line 39 def prepare_params(location) url = "#{@service_url}?" url << "address=#{@uri_object.encode(location)}" if location.kind_of? String url << "latlng=#{location.join(',')}" if location.kind_of? Array url << '&sensor=false' end
send_request(location)
click to toggle source
# File lib/geocoding_lite/geocoding_service.rb, line 51 def send_request(location) uri = @uri_object.parse(prepare_params(location)) @http_object.get_response(uri).body end