class Trackerific::Parsers::UPS

Protected Instance Methods

events() click to toggle source
# File lib/trackerific/parsers/ups.rb, line 20
def events
  activity.map do |a|
    date = parse_ups_date_time(a['Date'], a['Time'])
    Trackerific::Event.new(date, description(a), location(a))
  end
end
response_error() click to toggle source
# File lib/trackerific/parsers/ups.rb, line 4
def response_error
  @response_error ||= if @response.code != 200
    Trackerific::Error.new("HTTP returned status #{@response.code}")
  elsif response_status_code == :error
    Trackerific::Error.new(error_response)
  elsif response_status_code == :success
    false
  else
    Trackerific::Error.new("Unknown status code from server.")
  end
end
summary() click to toggle source
# File lib/trackerific/parsers/ups.rb, line 16
def summary
  description(activity.first)
end

Private Instance Methods

activity() click to toggle source
# File lib/trackerific/parsers/ups.rb, line 56
def activity
  @activity ||= begin
    a = track_response['Shipment']['Package']['Activity']
    a.is_a?(Array) ? a : [a]
  end
end
description(a) click to toggle source
# File lib/trackerific/parsers/ups.rb, line 48
def description(a)
  a['Status']['StatusType']['Description']
end
error_response() click to toggle source
# File lib/trackerific/parsers/ups.rb, line 39
def error_response
  track_response['Response']['Error']['ErrorDescription']
end
location(a) click to toggle source
# File lib/trackerific/parsers/ups.rb, line 52
def location(a)
  a['ActivityLocation']['Address'].map {|k,v| v}.join(" ")
end
parse_ups_date_time(date, time) click to toggle source
# File lib/trackerific/parsers/ups.rb, line 43
def parse_ups_date_time(date, time)
  hours, minutes, seconds = time.scan(/.{2}/)
  DateTime.parse("#{Date.parse(date)} #{hours}:#{minutes}:#{seconds}")
end
response_status_code() click to toggle source
# File lib/trackerific/parsers/ups.rb, line 33
def response_status_code
  { "0" => :error,
    "1" => :success
  }[track_response['Response']['ResponseStatusCode']]
end
track_response() click to toggle source
# File lib/trackerific/parsers/ups.rb, line 29
def track_response
  @response['TrackResponse']
end