class PostcodeValidation::UseCase::AddressList
Attributes
address_match_gateway[R]
logger[R]
Public Class Methods
new(address_list_gateway:, logger: nil)
click to toggle source
# File lib/postcode_validation/use_case/address_list.rb, line 6 def initialize(address_list_gateway:, logger: nil) @address_list_gateway = address_list_gateway @logger = logger @errors = [] end
Public Instance Methods
execute(postcode:, country:)
click to toggle source
# File lib/postcode_validation/use_case/address_list.rb, line 12 def execute(postcode:, country:) check_country(country) addresses = matched_addresses(postcode, country) formatted(addresses) rescue PostcodeValidation::Error::RequestError => e log_error(e) end
Private Instance Methods
check_country(country)
click to toggle source
# File lib/postcode_validation/use_case/address_list.rb, line 45 def check_country(country) @errors << 'no_country_provided' if country.nil? end
formatted(addresses)
click to toggle source
# File lib/postcode_validation/use_case/address_list.rb, line 25 def formatted(addresses) return { errors: @errors } unless @errors.empty? addresses.map do |address| { id: address.id, label: address.label } end end
log_error(e)
click to toggle source
# File lib/postcode_validation/use_case/address_list.rb, line 36 def log_error(e) logger.error(e) unless logger.nil? end
matched_addresses(postcode, country)
click to toggle source
# File lib/postcode_validation/use_case/address_list.rb, line 40 def matched_addresses(postcode, country) @address_list_gateway.query(search_term: postcode, country: country) end