Class: PostcodeValidation::UseCase::ValidateAddress

Inherits:
Object
  • Object
show all
Defined in:
lib/postcode_validation/use_case/validate_address.rb,
lib/postcode_validation/use_case/validate_address/format_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/regex_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/be_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/fr_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/gb_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/nl_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/sg_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/no_op_postcode_validator.rb

Defined Under Namespace

Modules: FormatValidators Classes: FormatValidator

Instance Method Summary collapse

Constructor Details

#initialize(address_match_gateway:, logger: nil) ⇒ ValidateAddress

Returns a new instance of ValidateAddress.



6
7
8
9
10
11
# File 'lib/postcode_validation/use_case/validate_address.rb', line 6

def initialize(address_match_gateway:, logger: nil)
  @format_validator = FormatValidator.new
  @address_match_gateway = address_match_gateway
  @logger = logger
  @errors = []
end

Instance Method Details

#execute(postcode:, country:) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/postcode_validation/use_case/validate_address.rb', line 13

def execute(postcode:, country:)
  check_country(country)

  if country == 'SG'
    check_postcode_format(postcode_without_spaces(postcode), country)

    if @errors.empty?
      return { valid?: true, reason: ['valid_postcode'] }
    end
  end

  check_postcode_format(postcode, country)
  result = matched_addresses(postcode, country)

  check_matched_addresses(result)

  result_payload(result, postcode)
rescue PostcodeValidation::Error::RequestError => e
  gracefully_handle_error(e)
end