Sha256: ea9738abec12f3c4a46fcc42cae353a15d4b1d5f522f9010a53f2ef4d85a5608

Contents?: true

Size: 1.24 KB

Versions: 4

Compression:

Stored size: 1.24 KB

Contents

# frozen_string_literal: true

module FriendlyShipping
  module Services
    class UpsFreight
      class GenerateLocationHash
        class << self
          def call(location:)
            {
              Name: truncate(location.company_name.presence || location.name),
              Address: {
                AddressLine: address_line(location),
                City: truncate(location.city, length: 29),
                StateProvinceCode: location.region&.code,
                PostalCode: location.zip,
                CountryCode: location.country&.code
              },
              AttentionName: truncate(location.name),
              Phone: {
                Number: truncate(location.phone, length: 14)
              }.compact.presence
            }.compact
          end

          private

          def address_line(location)
            address_lines = [
              location.address1,
              location.address2,
              location.address3
            ].compact.reject(&:empty?).map { |e| truncate(e) }
            address_lines.size > 1 ? address_lines : truncate(address_lines.first)
          end

          def truncate(value, length: 35)
            value && value[0..(length - 1)]
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
friendly_shipping-0.10.1 lib/friendly_shipping/services/ups_freight/generate_location_hash.rb
friendly_shipping-0.10.0 lib/friendly_shipping/services/ups_freight/generate_location_hash.rb
friendly_shipping-0.9.0 lib/friendly_shipping/services/ups_freight/generate_location_hash.rb
friendly_shipping-0.8.1 lib/friendly_shipping/services/ups_freight/generate_location_hash.rb