class TSAdata
Attributes
airportname[R]
checkpoints[R]
Public Class Methods
new(airportcode)
click to toggle source
# File lib/tsadatalite.rb, line 8 def initialize airportcode xml_airport_data = open('http://www.tsa.gov/data/apcp.xml') {|f| f.read} ng_airport_data = Nokogiri::XML(xml_airport_data) airport = ng_airport_data.xpath("//airport[shortcode='#{airportcode}']").at_xpath("name") raise "Invalid Airport" if airport.nil? @airportname = airport.text @checkpoints = {} ng_airport_data.xpath("//airport[shortcode='#{airportcode}']/checkpoints/checkpoint").each do |node| @checkpoints[node.at_xpath("id").text.to_i]=node.at_xpath("longname").text end waittimesurl = "http://apps.tsa.dhs.gov/MyTSAWebService/GetWaitTimes.ashx?ap=#{airportcode}" begin data = Net::HTTP.get_response(URI.parse(waittimesurl)).body rescue print "connection error" end wait_data = Nokogiri::XML(data) @waittimes = [] wait_data.xpath("//WaitTimes").each do |node| a = {} a[:checkpoint] = @checkpoints[node.at_xpath("CheckpointIndex").text.to_i] a[:wait] = node.at_xpath("WaitTimeIndex").text.to_i a[:date] = Date.rfc3339(node.at_xpath("Created_Datetime").text) @waittimes << a unless a[:checkpoint].nil? end @waittimes.sort_by! {|hash| hash[:date]} end
Public Instance Methods
recentwaits()
click to toggle source
# File lib/tsadatalite.rb, line 47 def recentwaits recentwaits = {} @waittimes.each do |waithash| recentwaits[waithash[:checkpoint]] = waithash[:wait] end recentwaits end