31 lines
709 B
Ruby
31 lines
709 B
Ruby
|
module Carto
|
||
|
module Bano
|
||
|
# input : address
|
||
|
# output : point RGeo::Cartesian::PointImpl
|
||
|
class PointRetriever
|
||
|
def initialize(address)
|
||
|
@address = address
|
||
|
end
|
||
|
|
||
|
def point
|
||
|
@point ||= convert_driver_result_to_point
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def driver
|
||
|
@driver ||= Carto::Bano::Driver.new @address
|
||
|
end
|
||
|
|
||
|
def convert_driver_result_to_point
|
||
|
result = JSON.parse(driver.call)
|
||
|
if result['features'].size == 0
|
||
|
Rails.logger.error "unable to find location for address #{@address}"
|
||
|
return nil
|
||
|
end
|
||
|
RGeo::GeoJSON.decode(result['features'][0]['geometry'], json_parser: :json)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|