ApiAdresse::Driver → ApiAdresse::API

This commit is contained in:
gregoirenovel 2018-10-15 17:35:44 +02:00
parent 5db4de6c53
commit a841a517df
5 changed files with 27 additions and 29 deletions

View file

@ -7,17 +7,17 @@ module ApiAdresse
end
def list
@list ||= convert_driver_result_to_full_address
@list ||= convert_api_result_to_full_address
end
private
def driver
@driver ||= ApiAdresse::Driver.new(@address, 5)
def api
@api ||= ApiAdresse::API.new(@address, 5)
end
def convert_driver_result_to_full_address
result = JSON.parse(driver.call)
def convert_api_result_to_full_address
result = JSON.parse(api.call)
if result['features'].empty?
Rails.logger.error "unable to find location for address #{@address}"

View file

@ -0,0 +1,16 @@
class ApiAdresse::API
# input : string (address)
# output : json
def initialize(address, limit = 1)
@address = address
@limit = limit
end
def call
search_url = [API_ADRESSE_URL, "search"].join("/")
RestClient.get(search_url, params: { q: @address, limit: @limit })
rescue RestClient::ServiceUnavailable
nil
end
end

View file

@ -1,18 +0,0 @@
module ApiAdresse
# input : string (address)
# output : json
class Driver
def initialize(address, limit = 1)
@address = address
@limit = limit
end
def call
search_url = [API_ADRESSE_URL, "search"].join("/")
RestClient.get(search_url, params: { q: @address, limit: @limit })
rescue RestClient::ServiceUnavailable
nil
end
end
end

View file

@ -7,17 +7,17 @@ module ApiAdresse
end
def point
@point ||= convert_driver_result_to_point
@point ||= convert_api_result_to_point
end
private
def driver
@driver ||= ApiAdresse::Driver.new(@address)
def api
@api ||= ApiAdresse::API.new(@address)
end
def convert_driver_result_to_point
result = JSON.parse(driver.call)
def convert_api_result_to_point
result = JSON.parse(api.call)
if result['features'].empty?
Rails.logger.error "unable to find location for address #{@address}"
return nil

View file

@ -8,7 +8,7 @@ describe ApiAdresse::Geocodeur do
end
context 'when RestClient::Exception' do
before do
allow_any_instance_of(ApiAdresse::Driver).to receive(:call).and_raise(RestClient::Exception)
allow_any_instance_of(ApiAdresse::API).to receive(:call).and_raise(RestClient::Exception)
end
it 'return nil' do
expect(described_class.convert_adresse_to_point(address)).to be_nil