Class: ShipEngine::Domain::Addresses

Inherits:
Object
  • Object
show all
Defined in:
lib/shipengine/domain/addresses.rb,
lib/shipengine/domain/addresses/address_validation.rb

Defined Under Namespace

Modules: AddressValidation

Instance Method Summary collapse

Constructor Details

#initialize(internal_client) ⇒ Addresses

Returns a new instance of Addresses.

Parameters:



12
13
14
# File 'lib/shipengine/domain/addresses.rb', line 12

def initialize(internal_client)
  @internal_client = internal_client
end

Instance Method Details

#validate(addresses, config) ⇒ Array<ShipEngine::Domain::Addresses::AddressValidationResponse>

Parameters:

  • addresses (ShipEngine::Domain::Addresses::AddressValidationRequest)
  • config (Hash?)

Returns:

  • (Array<ShipEngine::Domain::Addresses::AddressValidationResponse>)

See Also:



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/shipengine/domain/addresses.rb', line 22

def validate(addresses, config)
  addresses_array = addresses.map(&:compact)

  response = @internal_client.post('/v1/addresses/validate', addresses_array, config)
  address_api_result = response.body

  address_api_result.map do |result|
    mash_result = Hashie::Mash.new(result)
    normalized_original_address_api_result = AddressValidation::Address.new(
      address_line1: mash_result.original_address.address_line1,
      address_line2: mash_result.original_address.address_line2,
      address_line3: mash_result.original_address.address_line3,
      name: mash_result.original_address.name,
      company_name: mash_result.original_address.company_name,
      phone: mash_result.original_address.phone,
      city_locality: mash_result.original_address.city_locality,
      state_province: mash_result.original_address.state_province,
      postal_code: mash_result.original_address.postal_code,
      country_code: mash_result.original_address.country_code,
      address_residential_indicator: mash_result.original_address.address_residential_indicator
    )

    normalized_matched_address_api_result = if mash_result.matched_address
                                              AddressValidation::Address.new(
                                                address_line1: mash_result.matched_address.address_line1,
                                                address_line2: mash_result.matched_address.address_line2,
                                                address_line3: mash_result.matched_address.address_line3,
                                                name: mash_result.matched_address.name,
                                                company_name: mash_result.matched_address.company_name,
                                                phone: mash_result.matched_address.phone,
                                                city_locality: mash_result.matched_address.city_locality,
                                                state_province: mash_result.matched_address.state_province,
                                                postal_code: mash_result.matched_address.postal_code,
                                                country_code: mash_result.matched_address.country_code,
                                                address_residential_indicator: mash_result.matched_address.address_residential_indicator
                                              )
                                            end

    status = mash_result.status

    messages_classes = mash_result.messages.map do |msg|
      AddressValidation::Message.new(type: msg['type'], code: msg['code'], message: msg['message'])
    end

    AddressValidation::Response.new(
      status:,
      messages: messages_classes,
      original_address: normalized_original_address_api_result,
      matched_address: normalized_matched_address_api_result
    )
  end
end