class DhlExpressGlobal::Request::Rate

Public Class Methods

new(credentials, options={}) click to toggle source
Calls superclass method DhlExpressGlobal::Request::Base::new
# File lib/dhl_express_global/request/rate.rb, line 7
def initialize(credentials, options={})
  super
end

Public Instance Methods

process_request() click to toggle source
# File lib/dhl_express_global/request/rate.rb, line 11
def process_request
  api_response = self.class.post api_url, :body => build_xml, :headers => headers
  puts api_response if @debug
  response = parse_response(api_response)
  if success?(response)
    success_response(response)
  else
    failure_response(response)
  end
end

Private Instance Methods

add_recipient(xml) click to toggle source
# File lib/dhl_express_global/request/rate.rb, line 60
def add_recipient(xml)
  xml.Recipient {
    add_address_street_lines(xml, @recipient[:address])
    xml.City @recipient[:city]
    xml.PostalCode @recipient[:postal_code]
    xml.StateOrProvinceCode @recipient[:state] if @recipient[:state]
    xml.CountryCode @recipient[:country_code]
  }
end
add_shipper(xml) click to toggle source
# File lib/dhl_express_global/request/rate.rb, line 50
def add_shipper(xml)
  xml.Shipper {
    add_address_street_lines(xml, @shipper[:address])
    xml.City @shipper[:city]
    xml.PostalCode @shipper[:postal_code]
    xml.StateOrProvinceCode @shipper[:state] if @shipper[:state]
    xml.CountryCode @shipper[:country_code]
  }
end
build_xml() click to toggle source
# File lib/dhl_express_global/request/rate.rb, line 24
def build_xml
  builder = Nokogiri::XML::Builder.new do |xml|
    xml[:soapenv].Envelope( 'xmlns:soapenv' => "http://schemas.xmlsoap.org/soap/envelope/", 
                            'xmlns:ship' => "http://scxgxtt.phx-dc.dhl.com/euExpressRateBook/RateMsgRequest") {
      add_ws_authentication_header(xml)
      xml[:soapenv].Body {
        xml.RateRequest {
          xml.parent.namespace = nil
          xml.RequestedShipment {
            xml.DropOffType @shipping_options[:drop_off_type] ||= "REGULAR_PICKUP"
            xml.NextBusinessDay @shipping_options[:next_day] ||= "N"
            xml.Ship {
              add_shipper(xml)
              add_recipient(xml)
            }
            add_requested_packages(xml)
            xml.PaymentInfo @payment_info
            xml.Account @credentials.account_number
          }
        }
      }
    }
  end
  builder.doc.root.to_xml
end
headers() click to toggle source
Calls superclass method DhlExpressGlobal::Request::Base#headers
# File lib/dhl_express_global/request/rate.rb, line 70
def headers
  super.merge!("SOAPAction" => "euExpressRateBook_providerServices_ShipmentHandlingServices_Binder_getRateRequest")
end