Class: Trackerific::FedEx

Inherits:
Base
  • Object
show all
Includes:
HTTParty
Defined in:
lib/fedex.rb

Overview

Provides package tracking support for FedEx

Instance Method Summary (collapse)

Methods inherited from Base

#initialize

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.

Returns:

  • (Array)

    required options for tracking a FedEx package are :account and :meter.



13
14
15
# File 'lib/fedex.rb', line 13

def required_options
  [:account, :meter]
end

- (Trackerific::Details) track_package(package_id)

Tracks a FedEx package.

A Trackerific::Error is raised when a package cannot be tracked.

Returns:

Raises:



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