Class: ShipEngine::Domain::Addresses
- Inherits:
-
Object
- Object
- ShipEngine::Domain::Addresses
- Defined in:
- lib/shipengine/domain/addresses.rb,
lib/shipengine/domain/addresses/address_validation.rb
Defined Under Namespace
Modules: AddressValidation
Instance Method Summary collapse
-
#initialize(internal_client) ⇒ Addresses
constructor
A new instance of Addresses.
- #validate(addresses, config) ⇒ Array<ShipEngine::Domain::Addresses::AddressValidationResponse>
Constructor Details
#initialize(internal_client) ⇒ Addresses
Returns a new instance of Addresses.
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>
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 = mash_result..map do |msg| AddressValidation::Message.new(type: msg['type'], code: msg['code'], message: msg['message']) end AddressValidation::Response.new( status:, messages: , original_address: normalized_original_address_api_result, matched_address: normalized_matched_address_api_result ) end end |