class Fedex::Request::Delete

Attributes

tracking_number[R]

Public Class Methods

new(credentials, options={}) click to toggle source
# File lib/fedex/request/delete.rb, line 9
def initialize(credentials, options={})
  requires!(options, :tracking_number)

  @tracking_number  = options[:tracking_number]
  @deletion_control = options[:deletion_control] || 'DELETE_ALL_PACKAGES'
  @credentials  = credentials
end

Public Instance Methods

process_request() click to toggle source
# File lib/fedex/request/delete.rb, line 17
def process_request
  api_response = self.class.post(api_url, :body => build_xml)
  puts api_response if @debug == true
  response = parse_response(api_response)
  unless success?(response)
    error_message = if response[:shipment_reply]
      [response[:shipment_reply][:notifications]].flatten.first[:message]
    else
      "#{api_response["Fault"]["detail"]["fault"]["reason"]}\n
      --#{api_response["Fault"]["detail"]["fault"]["details"]["ValidationFailureDetail"]["message"].join("\n--")}"
    end rescue $1
    raise RateError, error_message
  end
end

Private Instance Methods

build_xml() click to toggle source

Build xml Fedex Web Service request

# File lib/fedex/request/delete.rb, line 35
def build_xml
  builder = Nokogiri::XML::Builder.new do |xml|
    xml.DeleteShipmentRequest(:xmlns => "http://fedex.com/ws/ship/v#{service[:version]}"){
      add_web_authentication_detail(xml)
      add_client_detail(xml)
      add_version(xml)
      xml.TrackingId {
        xml.TrackingIdType 'FEDEX'
        xml.TrackingNumber @tracking_number
      }
      xml.DeletionControl @deletion_control
    }
  end
  builder.doc.root.to_xml
end
service() click to toggle source
# File lib/fedex/request/delete.rb, line 51
def service
  { :id => 'ship', :version => Fedex::API_VERSION }
end
success?(response) click to toggle source

Successful request

# File lib/fedex/request/delete.rb, line 56
def success?(response)
  response[:shipment_reply] &&
    %w{SUCCESS WARNING NOTE}.include?(response[:shipment_reply][:highest_severity])
end