class Trackerific::Parsers::USPS

Protected Instance Methods

events() click to toggle source
# File lib/trackerific/parsers/usps.rb, line 20
def events
  tracking_info.fetch('TrackDetail', []).map do |e|
    Trackerific::Event.new(date(e), description(e), location(e))
  end
end
response_error() click to toggle source
# File lib/trackerific/parsers/usps.rb, line 4
def response_error
  @response_error ||= if @response.code != 200
    Trackerific::Error.new("HTTP returned status #{@response.code}")
  elsif @response['Error']
    Trackerific::Error.new(@response['Error']['Description'])
  elsif @response['TrackResponse'].nil? && @response['CityStateLookupResponse'].nil?
    Trackerific::Error.new("Invalid response from server.")
  else
    false
  end
end
summary() click to toggle source
# File lib/trackerific/parsers/usps.rb, line 16
def summary
  tracking_info['TrackSummary']
end

Private Instance Methods

date(event) click to toggle source
# File lib/trackerific/parsers/usps.rb, line 32
def date(event)
  d = event.split(" ")
  DateTime.parse(d[0..3].join(" "))
end
description(event) click to toggle source
# File lib/trackerific/parsers/usps.rb, line 37
def description(event)
  d = event.split(" ")
  d[4..d.length-4].join(" ")
end
location(event) click to toggle source
# File lib/trackerific/parsers/usps.rb, line 42
def location(event)
  d = event.gsub(".", "").split(" ")
  city, state, zip = d.last(3)
  "#{city}, #{state} #{zip}"
end
tracking_info() click to toggle source
# File lib/trackerific/parsers/usps.rb, line 28
def tracking_info
  @response['TrackResponse']['TrackInfo']
end