class RoyalMailScraper::Tracker::Response

Constants

DETAILS_PATH
ERROR_PATH
TIME_FORMAT

Attributes

html[R]

Public Class Methods

new(body) click to toggle source
# File lib/royal_mail_scraper/tracker/response.rb, line 12
def initialize(body)
  @html = Nokogiri::HTML(body)
end

Public Instance Methods

tracker() click to toggle source
# File lib/royal_mail_scraper/tracker/response.rb, line 16
def tracker
  Tracker.new(tracking_number, details.reverse)
end

Private Instance Methods

details() click to toggle source
# File lib/royal_mail_scraper/tracker/response.rb, line 27
def details
  html.xpath(DETAILS_PATH).map do |tr|
    date, time, message, location = tr.css('td').map(&:content).map(&:strip)
    time = '00:00' unless time =~ /\A\d+:\d+\z/
    datetime = DateTime.strptime([date, time].join(' '), TIME_FORMAT) rescue DateTime.new
    Tracker::Detail.new(datetime, message, location)
  end
end
tracking_number() click to toggle source
# File lib/royal_mail_scraper/tracker/response.rb, line 22
def tracking_number
  el = @html.at('input[@name="tracking_number"]')
  el ? el.attr(:value).to_s.strip : nil
end