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