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/ae_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/ar_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/at_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/bd_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/be_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/bn_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/bo_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/br_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/ch_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/cn_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/cz_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/de_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/dk_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/ee_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/es_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/gr_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/hk_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/hu_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/id_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/ie_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/in_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/kh_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/kr_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/la_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/lk_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/lt_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/lv_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/ma_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/mm_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/my_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/no_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/om_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/pg_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/pk_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/pl_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/ru_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/th_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/tn_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/tr_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/ua_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/use_format_check_only.rb,
lib/postcode_validation/use_case/validate_address/format_validators/uy_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/vn_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/za_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/no_op_postcode_validator.rb,
lib/postcode_validation/use_case/validate_address/format_validators/use_external_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
# 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
end

Instance Method Details

#execute(postcode:, country:) ⇒ Object



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

def execute(postcode:, country:)
  @errors = []
  check_country(country)

  postcode = postcode_without_spaces(postcode)
  return the_postcode_is_valid if use_local_validator?(country) && format_valid_for_country?(country, postcode)

  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