From 1c169c770eb9a02e776d5046566f0dbb96310a59 Mon Sep 17 00:00:00 2001 From: Manny Dinssa <44172848+Dinssa@users.noreply.github.com> Date: Thu, 30 Jan 2025 16:46:28 +0000 Subject: [PATCH] Revert address client and use uprn client --- app/controllers/address_options_controller.rb | 10 +++--- app/models/log.rb | 4 +-- app/services/address_client.rb | 32 ++++--------------- .../lettings/questions/uprn_selection_spec.rb | 2 +- .../sales/questions/uprn_selection_spec.rb | 2 +- 5 files changed, 16 insertions(+), 34 deletions(-) diff --git a/app/controllers/address_options_controller.rb b/app/controllers/address_options_controller.rb index 6b7436d01..e45a4ac6c 100644 --- a/app/controllers/address_options_controller.rb +++ b/app/controllers/address_options_controller.rb @@ -4,7 +4,7 @@ class AddressOptionsController < ApplicationController if query.match?(/\A\d+\z/) && query.length > 5 # Query is all numbers and greater than 5 digits, assume it's a UPRN - service = AddressClient.new(uprn: query) + service = UprnClient.new(query) service.call if service.error.present? @@ -14,7 +14,7 @@ class AddressOptionsController < ApplicationController end elsif query.match?(/[a-zA-Z]/) # Query contains letters, assume it's an address - service = AddressClient.new(address: query) + service = AddressClient.new(query) service.call if service.error.present? @@ -24,8 +24,8 @@ class AddressOptionsController < ApplicationController end else # Query is ambiguous, use both APIs and merge results - address_service = AddressClient.new(address: query) - uprn_service = AddressClient.new(uprn: query) + address_service = AddressClient.new(query) + uprn_service = UprnClient.new(query) address_service.call uprn_service.call @@ -46,7 +46,7 @@ class AddressOptionsController < ApplicationController uprn = sales_log&.address_search if uprn.present? - service = AddressClient.new(uprn: uprn) + service = UprnClient.new(uprn) service.call if service.error.present? diff --git a/app/models/log.rb b/app/models/log.rb index 2cfb40587..5be9313f3 100644 --- a/app/models/log.rb +++ b/app/models/log.rb @@ -89,7 +89,7 @@ class Log < ApplicationRecord def process_address_change! if uprn_selection.present? || select_best_address_match.present? if select_best_address_match - service = AddressClient.new(address: address_string) + service = AddressClient.new(address_string) service.call return nil if service.result.blank? || service.error.present? @@ -134,7 +134,7 @@ class Log < ApplicationRecord @last_searched_address_string = search_query - service = AddressClient.new(address: address_string) + service = AddressClient.new(address_string) service.call if service.result.blank? || service.error.present? @address_options = [] diff --git a/app/services/address_client.rb b/app/services/address_client.rb index ec3cbdb31..6ebc8e79f 100644 --- a/app/services/address_client.rb +++ b/app/services/address_client.rb @@ -1,14 +1,14 @@ +require "net/http" + class AddressClient - attr_reader :address, :uprn + attr_reader :address attr_accessor :error ADDRESS = "api.os.uk".freeze - PATH_FIND = "/search/places/v1/find".freeze - PATH_UPRN = "/search/places/v1/uprn".freeze + PATH = "/search/places/v1/find".freeze - def initialize(address: nil, uprn: nil) + def initialize(address) @address = address - @uprn = uprn end def call @@ -27,14 +27,6 @@ class AddressClient end end - def result_by_uprn - if response.is_a?(Net::HTTPSuccess) - @result ||= JSON.parse(response.body)["result"] - else - @result = nil - end - end - private def http_client @@ -47,7 +39,7 @@ class AddressClient end def endpoint_uri - uri = URI(PATH_FIND) + uri = URI(PATH) params = { query: address, key: ENV["OS_DATA_KEY"], @@ -58,17 +50,7 @@ class AddressClient uri.to_s end - def endpoint_uri_by_uprn - uri = URI(PATH_UPRN) - params = { - uprn: uprn, - key: ENV["OS_DATA_KEY"], - } - uri.query = URI.encode_www_form(params) - uri.to_s - end - def response - @response ||= http_client.request_get(address ? endpoint_uri : endpoint_uri_by_uprn) + @response ||= http_client.request_get(endpoint_uri) end end diff --git a/spec/models/form/lettings/questions/uprn_selection_spec.rb b/spec/models/form/lettings/questions/uprn_selection_spec.rb index 53fd3816f..c3edc646e 100644 --- a/spec/models/form/lettings/questions/uprn_selection_spec.rb +++ b/spec/models/form/lettings/questions/uprn_selection_spec.rb @@ -7,7 +7,7 @@ RSpec.describe Form::Lettings::Questions::UprnSelection, type: :model do let(:question_definition) { nil } let(:page) { instance_double(Form::Page, skip_href: "skip_href") } let(:log) { build(:lettings_log, :in_progress, address_line1_input: "Address line 1", postcode_full_input: "AA1 1AA") } - let(:address_client_instance) { AddressClient.new(address: log.address_string) } + let(:address_client_instance) { AddressClient.new(log.address_string) } before do allow(AddressClient).to receive(:new).and_return(address_client_instance) diff --git a/spec/models/form/sales/questions/uprn_selection_spec.rb b/spec/models/form/sales/questions/uprn_selection_spec.rb index 2ed1117d1..ff1b1a6dd 100644 --- a/spec/models/form/sales/questions/uprn_selection_spec.rb +++ b/spec/models/form/sales/questions/uprn_selection_spec.rb @@ -7,7 +7,7 @@ RSpec.describe Form::Sales::Questions::UprnSelection, type: :model do let(:question_definition) { nil } let(:page) { instance_double(Form::Page, skip_href: "skip_href") } let(:log) { build(:sales_log, :in_progress, address_line1_input: "Address line 1", postcode_full_input: "AA1 1AA") } - let(:address_client_instance) { AddressClient.new(address: log.address_string) } + let(:address_client_instance) { AddressClient.new(log.address_string) } before do allow(AddressClient).to receive(:new).and_return(address_client_instance)