class DefraRuby::Address::OsPlacesAddressLookupService

Constants

OS_PLACES_ADDRESS_LOOKUP_NO_MATCH_ERROR_MSG

Attributes

postcode[R]

Public Instance Methods

run(postcode) click to toggle source
# File lib/defra_ruby/address/services/os_places_address_lookup_service.rb, line 7
def run(postcode)
  @postcode = postcode
  Response.new(response_exe)
end

Private Instance Methods

process_error(error) click to toggle source
# File lib/defra_ruby/address/services/os_places_address_lookup_service.rb, line 40
def process_error(error)
  if JSON.parse(error.response)["error"]["message"] == OS_PLACES_ADDRESS_LOOKUP_NO_MATCH_ERROR_MSG
    error = NoMatchError.new
  end
rescue StandardError
  error
ensure
  error
end
response_exe() click to toggle source
# File lib/defra_ruby/address/services/os_places_address_lookup_service.rb, line 25
def response_exe
  lambda do
    begin
      response = RestClient::Request.execute(
        method: :get,
        url: url,
        timeout: DefraRuby::Address.configuration.timeout
      )
      JSON.parse(response)
    rescue RestClient::BadRequest => e
      raise process_error(e)
    end
  end
end
url() click to toggle source
# File lib/defra_ruby/address/services/os_places_address_lookup_service.rb, line 18
def url
  File.join(
    DefraRuby::Address.configuration.host,
    "/addresses?postcode=#{postcode}"
  )
end