ApiAdresse::Driver → ApiAdresse::API
This commit is contained in:
parent
5db4de6c53
commit
a841a517df
5 changed files with 27 additions and 29 deletions
|
@ -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}"
|
||||
|
|
16
app/lib/api_adresse/api.rb
Normal file
16
app/lib/api_adresse/api.rb
Normal 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
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue