class SimpleShipping::Fedex::PartyBuilder

Knows how to convert {Party} model to SOAP element for FedEx.

Public Instance Methods

build() click to toggle source

Build a SOAP party element as a hash for Savon.

# File lib/simple_shipping/fedex/party_builder.rb, line 5
def build
  {'Contact' => build_contact,
   'Address' => build_address,
   :order!   => ['Contact', 'Address']}
end

Private Instance Methods

build_address() click to toggle source

Build body for Address element.

@return [Hash]

# File lib/simple_shipping/fedex/party_builder.rb, line 34
def build_address
  addr = @model.address
  {'StreetLines'         => addr.street_line,
   'City'                => addr.city,
   'StateOrProvinceCode' => addr.state_code,
   'PostalCode'          => addr.postal_code,
   'CountryCode'         => addr.country_code,
   :order!               => [ 'StreetLines',
                              'City',
                              'StateOrProvinceCode',
                              'PostalCode',
                              'CountryCode' ]
  }
end
build_contact() click to toggle source

Build the body for a Contact element.

@return [Hash]

# File lib/simple_shipping/fedex/party_builder.rb, line 14
def build_contact
  result  = {:order! => []}
  contact = @model.contact
  if contact.company_name
    result['CompanyName'] = contact.company_name
    result[:order!] << 'CompanyName'
  end
  if contact.person_name
    result['PersonName']  = contact.person_name
    result[:order!] << 'PersonName'
  end
  result['PhoneNumber'] = contact.phone_number
  result[:order!] << 'PhoneNumber'
  result
end