Class: Trackerific::FedEx
Overview
Provides package tracking support for FedEx
Instance Method Summary (collapse)
-
- (Array) required_options
Required options for tracking a FedEx package are :account and :meter.
-
- (Trackerific::Details) track_package(package_id)
Tracks a FedEx package.
Methods inherited from Base
Constructor Details
This class inherits a constructor from Trackerific::Base
Instance Method Details
- (Array) required_options
Required options for tracking a FedEx package are :account and :meter.
13 14 15 |
# File 'lib/fedex.rb', line 13 def [:account, :meter] end |
- (Trackerific::Details) track_package(package_id)
Tracks a FedEx package.
A Trackerific::Error is raised when a package cannot be tracked.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/fedex.rb', line 22 def track_package(package_id) super http_response = self.class.post "/GatewayDC", :body => build_xml_request http_response.error! unless http_response.code == 200 track_reply = http_response["FDXTrack2Reply"] raise Trackerific::Error, track_reply["Error"]["Message"] unless track_reply["Error"].nil? details = track_reply["Package"] events = [] details["Event"].each do |e| date = Time.parse("#{e["Date"]} #{e["Time"]}") desc = e["Description"] addr = e["Address"] # Adds event in this format: # MM DD HH:MM am/pm Description City State Zip events << Trackerific::Event.new(date, desc, "#{addr["StateOrProvinceCode"]} #{addr["PostalCode"]}") end Details.new( details["TrackingNumber"], details["StatusDescription"], events ) end |