Class: AddressValidation::Result

Inherits:
Data
  • Object
show all
Defined in:
app/services/address_validation/result.rb

Overview

Outcome of an address-verification request, normalized across providers.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(status:, candidates: [], provider: nil, message: nil) ⇒ void

Parameters:

  • status (Symbol)

    one of :verified, :ambiguous, :unverified, :indeterminate, :error

  • candidates (Array<AddressValidation::Candidate>) (defaults to: [])

    suggested corrections

  • provider (Symbol, nil) (defaults to: nil)

    which provider produced this result

  • message (String, nil) (defaults to: nil)

    provider status message



27
28
29
# File 'app/services/address_validation/result.rb', line 27

def initialize(status:, candidates: [], provider: nil, message: nil)
  super(status: status, candidates: candidates.freeze, provider: provider, message: message)
end

Instance Attribute Details

#candidatesArray<AddressValidation::Candidate> (readonly)

Returns suggested corrections.

Returns:



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/services/address_validation/result.rb', line 21

Result = Data.define(:status, :candidates, :provider, :message) do
  # @param status [Symbol] one of :verified, :ambiguous, :unverified, :indeterminate, :error
  # @param candidates [Array<AddressValidation::Candidate>] suggested corrections
  # @param provider [Symbol, nil] which provider produced this result
  # @param message [String, nil] provider status message
  # @return [void]
  def initialize(status:, candidates: [], provider: nil, message: nil)
    super(status: status, candidates: candidates.freeze, provider: provider, message: message)
  end

  # @return [Boolean] true when exactly one confident correction is available.
  def verified? = status == :verified && candidates.one?

  # @return [Boolean]
  def ambiguous? = status == :ambiguous

  # @return [AddressValidation::Candidate, nil] the top candidate.
  def best = candidates.first
end

#messageString? (readonly)

Returns provider status message.

Returns:

  • (String, nil)

    provider status message



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/services/address_validation/result.rb', line 21

Result = Data.define(:status, :candidates, :provider, :message) do
  # @param status [Symbol] one of :verified, :ambiguous, :unverified, :indeterminate, :error
  # @param candidates [Array<AddressValidation::Candidate>] suggested corrections
  # @param provider [Symbol, nil] which provider produced this result
  # @param message [String, nil] provider status message
  # @return [void]
  def initialize(status:, candidates: [], provider: nil, message: nil)
    super(status: status, candidates: candidates.freeze, provider: provider, message: message)
  end

  # @return [Boolean] true when exactly one confident correction is available.
  def verified? = status == :verified && candidates.one?

  # @return [Boolean]
  def ambiguous? = status == :ambiguous

  # @return [AddressValidation::Candidate, nil] the top candidate.
  def best = candidates.first
end

#providerSymbol (readonly)

Returns which provider produced this result.

Returns:

  • (Symbol)

    which provider produced this result



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/services/address_validation/result.rb', line 21

Result = Data.define(:status, :candidates, :provider, :message) do
  # @param status [Symbol] one of :verified, :ambiguous, :unverified, :indeterminate, :error
  # @param candidates [Array<AddressValidation::Candidate>] suggested corrections
  # @param provider [Symbol, nil] which provider produced this result
  # @param message [String, nil] provider status message
  # @return [void]
  def initialize(status:, candidates: [], provider: nil, message: nil)
    super(status: status, candidates: candidates.freeze, provider: provider, message: message)
  end

  # @return [Boolean] true when exactly one confident correction is available.
  def verified? = status == :verified && candidates.one?

  # @return [Boolean]
  def ambiguous? = status == :ambiguous

  # @return [AddressValidation::Candidate, nil] the top candidate.
  def best = candidates.first
end

#statusSymbol (readonly)

Returns one of:

  • +:verified+ — a single confident canonical match
  • +:ambiguous+ — multiple plausible candidates
  • +:unverified+ — provider rejected the address
  • +:indeterminate+ — provider couldn't decide / declined to validate
  • +:error+ — the provider call failed.

Returns:

  • (Symbol)

    one of:

    • +:verified+ — a single confident canonical match
    • +:ambiguous+ — multiple plausible candidates
    • +:unverified+ — provider rejected the address
    • +:indeterminate+ — provider couldn't decide / declined to validate
    • +:error+ — the provider call failed


21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/services/address_validation/result.rb', line 21

Result = Data.define(:status, :candidates, :provider, :message) do
  # @param status [Symbol] one of :verified, :ambiguous, :unverified, :indeterminate, :error
  # @param candidates [Array<AddressValidation::Candidate>] suggested corrections
  # @param provider [Symbol, nil] which provider produced this result
  # @param message [String, nil] provider status message
  # @return [void]
  def initialize(status:, candidates: [], provider: nil, message: nil)
    super(status: status, candidates: candidates.freeze, provider: provider, message: message)
  end

  # @return [Boolean] true when exactly one confident correction is available.
  def verified? = status == :verified && candidates.one?

  # @return [Boolean]
  def ambiguous? = status == :ambiguous

  # @return [AddressValidation::Candidate, nil] the top candidate.
  def best = candidates.first
end

Instance Method Details

#ambiguous?Boolean

Returns:

  • (Boolean)


35
# File 'app/services/address_validation/result.rb', line 35

def ambiguous? = status == :ambiguous

#bestAddressValidation::Candidate?

Returns the top candidate.

Returns:



38
# File 'app/services/address_validation/result.rb', line 38

def best = candidates.first

#verified?Boolean

Returns true when exactly one confident correction is available.

Returns:

  • (Boolean)

    true when exactly one confident correction is available.



32
# File 'app/services/address_validation/result.rb', line 32

def verified? = status == :verified && candidates.one?