Module: AwesomeUsps::Tracking

Included in:
USPS
Defined in:
lib/awesome_usps/tracking.rb

Instance Method Summary collapse

Instance Method Details

#canned_trackingObject



9
10
11
12
13
# File 'lib/awesome_usps/tracking.rb', line 9

def canned_tracking
  tracking_number = "EJ958083578US"
  request = xml_for_tracking(tracking_number)
  gateway_commit(:tracking, 'TrackV2', request, :test)
end

#parse_tracking(xml) ⇒ Object

Parses the XML into an array broken up by each event. Example of returned array



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/awesome_usps/tracking.rb', line 26

def parse_tracking(xml)
  event_list = []
  parse = Hpricot.parse(xml)/:trackdetail
  if parse == []
    RAILS_DEFAULT_LOGGER.info "#{xml}"
    return (Hpricot.parse(xml)/:description).inner_html
  else
    parse.each do |detail|
      h = {}
      detail.children.each { |elem| h[elem.name.to_sym] = elem.inner_text unless elem.inner_text.blank? }
      event_list << h
    end
  end
  event_list
end

#track(tracking_number) ⇒ Object

Takes your package tracking number and returns information for the USPS web API



4
5
6
7
# File 'lib/awesome_usps/tracking.rb', line 4

def track(tracking_number)
  request = xml_for_tracking(tracking_number)
  gateway_commit(:tracking, 'TrackV2', request, :live)
end

#xml_for_tracking(tracking_number) ⇒ Object

XML from a straight string. “<TrackFieldRequest USERID=‘#@username’><TrackID ID=‘#@tracking_number’></TrackID></TrackFieldRequest>”



17
18
19
20
21
22
# File 'lib/awesome_usps/tracking.rb', line 17

def xml_for_tracking(tracking_number)
  xm = Builder::XmlMarkup.new
  xm.TrackFieldRequest("USERID" =>"#{@username}") do
    xm.TrackID("ID"=> "#{tracking_number}")
  end
end