Module: Tubeline

Defined in:
lib/tubeline.rb

Constant Summary collapse

VERSION =
"0.1"
STATUS_ENDPOINT =
"http://cloud.tfl.gov.uk/TrackerNet/LineStatus"

Class Method Summary collapse

Class Method Details

.fetch_xmlObject



27
28
29
# File 'lib/tubeline.rb', line 27

def self.fetch_xml
  Net::HTTP.get URI.parse STATUS_ENDPOINT
end

.statusObject



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/tubeline.rb', line 8

def self.status
  doc = Nokogiri::XML.parse fetch_xml

  doc.css("LineStatus").inject(Hash.new) do |hash, line_status|
    status = Hash[line_status.css("Status").first.attributes.map{|k, v| [k, v.to_s] }]
    line = Hash[line_status.css("Line").first.attributes.map{|k, v| [k, v.to_s]}]
    line_status = Hash[line_status.attributes.map{|k, v| [k, v.to_s] }]

    hash.update(line["Name"].gsub(/\W/, "_").downcase.to_sym => {
      name: line["Name"],
      line_id: line["ID"].to_i,
      active: status["IsActive"] == "true",
      technical: status["CssClass"],
      description: status["Description"],
      explanation: line_status["StatusDetails"]
    })
  end
end