commit 83a78fde6d02b56a6a6e6ca693d3c18f6b779cc6 Author: Dan Barber Date: Thu Jan 24 10:52:32 2013 +0000 Initial commit. diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..9d1fea7 --- /dev/null +++ b/Gemfile @@ -0,0 +1,13 @@ +source :rubygems + +gem 'sinatra' +gem 'sinatra-jsonp' +gem 'foreman' + +group :development do + gem 'shotgun' +end + +group :production do + gem 'thin' +end diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..3eb2328 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,36 @@ +GEM + remote: http://rubygems.org/ + specs: + daemons (1.1.9) + eventmachine (1.0.0) + foreman (0.61.0) + thor (>= 0.13.6) + multi_json (1.3.7) + rack (1.5.0) + rack-protection (1.3.2) + rack + shotgun (0.9) + rack (>= 1.0) + sinatra (1.3.3) + rack (~> 1.3, >= 1.3.6) + rack-protection (~> 1.2) + tilt (~> 1.3, >= 1.3.3) + sinatra-jsonp (0.4.1) + multi_json (~> 1.3.7) + sinatra (~> 1.0) + thin (1.5.0) + daemons (>= 1.0.9) + eventmachine (>= 0.12.6) + rack (>= 1.0.0) + thor (0.17.0) + tilt (1.3.3) + +PLATFORMS + ruby + +DEPENDENCIES + foreman + shotgun + sinatra + sinatra-jsonp + thin diff --git a/config.ru b/config.ru new file mode 100644 index 0000000..a49618a --- /dev/null +++ b/config.ru @@ -0,0 +1,6 @@ +require 'bundler' + +Bundler.setup +require './tubefeed' + +run Tubefeed diff --git a/data/now.json b/data/now.json new file mode 100644 index 0000000..653d30c --- /dev/null +++ b/data/now.json @@ -0,0 +1 @@ +{"response":{"lines":[{"name":"Bakerloo","id":"bakerloo","status":"good service","messages":[],"status_starts":"Mon, 21 Jan 2013 13:43:01 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 16:31:31 +0000"},{"name":"Central","id":"central","status":"good service","messages":[],"status_starts":"Wed, 23 Jan 2013 14:09:01 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 16:31:31 +0000"},{"name":"Circle","id":"circle","status":"good service","messages":[],"status_starts":"Tue, 22 Jan 2013 11:50:01 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 16:31:31 +0000"},{"name":"District","id":"district","status":"good service","messages":[],"status_starts":"Tue, 22 Jan 2013 11:29:01 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 16:31:31 +0000"},{"name":"DLR","id":"docklands","status":"good service","messages":[],"status_starts":"Tue, 22 Jan 2013 08:33:01 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 16:31:31 +0000"},{"name":"H'smith & City","id":"hammersmithcity","status":"good service","messages":[],"status_starts":"Tue, 22 Jan 2013 01:35:01 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 16:31:31 +0000"},{"name":"Jubilee","id":"jubilee","status":"good service","messages":[],"status_starts":"Mon, 21 Jan 2013 09:39:01 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 16:31:31 +0000"},{"name":"Metropolitan","id":"metropolitan","status":"good service","messages":[],"status_starts":"Mon, 21 Jan 2013 12:39:01 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 16:31:31 +0000"},{"name":"Northern","id":"northern","status":"good service","messages":[],"status_starts":"Wed, 23 Jan 2013 10:18:01 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 16:31:31 +0000"},{"name":"Overground","id":"overground","status":"good service","messages":[],"status_starts":"Tue, 22 Jan 2013 15:02:02 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 16:31:31 +0000"},{"name":"Piccadilly","id":"piccadilly","status":"good service","messages":[],"status_starts":"Mon, 21 Jan 2013 07:02:02 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 16:31:31 +0000"},{"name":"Victoria","id":"victoria","status":"minor delays","messages":["Minor delays while we fix a signal failure at Highbury & Islington."],"status_starts":"Wed, 23 Jan 2013 16:24:01 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 16:31:31 +0000"},{"name":"Waterloo & City","id":"waterloocity","status":"good service","messages":[],"status_starts":"Mon, 21 Jan 2013 19:58:01 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 16:31:31 +0000"}]}} diff --git a/data/tomorrow.json b/data/tomorrow.json new file mode 100644 index 0000000..9a992ac --- /dev/null +++ b/data/tomorrow.json @@ -0,0 +1 @@ +{"response":{"lines":[{"name":"Bakerloo","id":"bakerloo","status":"good service","messages":[],"status_starts":"Mon, 21 Jan 2013 13:43:01 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 17:49:06 +0000"},{"name":"Central","id":"central","status":"minor delays","messages":["Minor delays between Leytonstone and Epping while we fix a signal failure at Loughton."],"status_starts":"Wed, 23 Jan 2013 17:37:01 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 17:49:06 +0000"},{"name":"Circle","id":"circle","status":"good service","messages":[],"status_starts":"Tue, 22 Jan 2013 11:50:01 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 17:49:06 +0000"},{"name":"District","id":"district","status":"minor delays","messages":["Minor delays following a person ill on a train at Mile End."],"status_starts":"Wed, 23 Jan 2013 17:49:02 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 17:49:06 +0000"},{"name":"DLR","id":"docklands","status":"good service","messages":[],"status_starts":"Tue, 22 Jan 2013 08:33:01 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 17:49:06 +0000"},{"name":"H'smith & City","id":"hammersmithcity","status":"minor delays","messages":["Minor delays following a person ill on a train at Mile End."],"status_starts":"Wed, 23 Jan 2013 17:49:02 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 17:49:06 +0000"},{"name":"Jubilee","id":"jubilee","status":"good service","messages":[],"status_starts":"Mon, 21 Jan 2013 09:39:01 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 17:49:06 +0000"},{"name":"Metropolitan","id":"metropolitan","status":"good service","messages":[],"status_starts":"Mon, 21 Jan 2013 12:39:01 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 17:49:06 +0000"},{"name":"Northern","id":"northern","status":"good service","messages":[],"status_starts":"Wed, 23 Jan 2013 10:18:01 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 17:49:06 +0000"},{"name":"Overground","id":"overground","status":"good service","messages":[],"status_starts":"Tue, 22 Jan 2013 15:02:02 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 17:49:06 +0000"},{"name":"Piccadilly","id":"piccadilly","status":"good service","messages":[],"status_starts":"Mon, 21 Jan 2013 07:02:02 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 17:49:06 +0000"},{"name":"Victoria","id":"victoria","status":"severe delays","messages":["Severe delays due to an earlier signal failure at Highbury & Islington. Tickets will be accepted on First Capital Connect (Great Northern), Greater Anglia, Southeastern trains and London buses."],"status_starts":"Wed, 23 Jan 2013 17:19:01 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 17:49:06 +0000"},{"name":"Waterloo & City","id":"waterloocity","status":"good service","messages":[],"status_starts":"Mon, 21 Jan 2013 19:58:01 +0000","status_ends":"","status_requested":"Wed, 23 Jan 2013 17:49:06 +0000"}]}} diff --git a/data/weekend.json b/data/weekend.json new file mode 100644 index 0000000..18ea531 --- /dev/null +++ b/data/weekend.json @@ -0,0 +1,150 @@ +{ + "response":{ + "lines":[ + { + "name":"Bakerloo", + "id":"bakerloo", + "status":"good service", + "messages":[ + + ], + "status_starts":"Mon, 21 Jan 2013 13:43:01 +0000", + "status_ends":"", + "status_requested":"Wed, 23 Jan 2013 14:53:42 +0000" + }, + { + "name":"Central", + "id":"central", + "status":"good service", + "messages":[ + + ], + "status_starts":"Wed, 23 Jan 2013 14:09:01 +0000", + "status_ends":"", + "status_requested":"Wed, 23 Jan 2013 14:53:42 +0000" + }, + { + "name":"Circle", + "id":"circle", + "status":"special service", + "messages":[ + + ], + "status_starts":"Tue, 22 Jan 2013 11:50:01 +0000", + "status_ends":"", + "status_requested":"Wed, 23 Jan 2013 14:53:42 +0000" + }, + { + "name":"District", + "id":"district", + "status":"major delays", + "messages":[ + "MONUMENT AND BANK STATIONS: Please avoid using Monument Station to interchange with services from Bank.", + "DISTRICT LINE: Sunday 1 March, suspended between Ealing Broadway and Hammersmith." + ], + "status_starts":"Tue, 22 Jan 2013 11:29:01 +0000", + "status_ends":"", + "status_requested":"Wed, 23 Jan 2013 14:53:42 +0000" + }, + { + "name":"DLR", + "id":"docklands", + "status":"good service", + "messages":[ + + ], + "status_starts":"Tue, 22 Jan 2013 08:33:01 +0000", + "status_ends":"", + "status_requested":"Wed, 23 Jan 2013 14:53:42 +0000" + }, + { + "name":"H'smith & City", + "id":"hammersmithcity", + "status":"good service", + "messages":[ + + ], + "status_starts":"Tue, 22 Jan 2013 01:35:01 +0000", + "status_ends":"", + "status_requested":"Wed, 23 Jan 2013 14:53:42 +0000" + }, + { + "name":"Jubilee", + "id":"jubilee", + "status":"good service", + "messages":[ + + ], + "status_starts":"Mon, 21 Jan 2013 09:39:01 +0000", + "status_ends":"", + "status_requested":"Wed, 23 Jan 2013 14:53:42 +0000" + }, + { + "name":"Metropolitan", + "id":"metropolitan", + "status":"good service", + "messages":[ + + ], + "status_starts":"Mon, 21 Jan 2013 12:39:01 +0000", + "status_ends":"", + "status_requested":"Wed, 23 Jan 2013 14:53:42 +0000" + }, + { + "name":"Northern", + "id":"northern", + "status":"part closure", + "messages":[ + + ], + "status_starts":"Wed, 23 Jan 2013 10:18:01 +0000", + "status_ends":"", + "status_requested":"Wed, 23 Jan 2013 14:53:42 +0000" + }, + { + "name":"Overground", + "id":"overground", + "status":"good service", + "messages":[ + + ], + "status_starts":"Tue, 22 Jan 2013 15:02:02 +0000", + "status_ends":"", + "status_requested":"Wed, 23 Jan 2013 14:53:42 +0000" + }, + { + "name":"Piccadilly", + "id":"piccadilly", + "status":"good service", + "messages":[ + + ], + "status_starts":"Mon, 21 Jan 2013 07:02:02 +0000", + "status_ends":"", + "status_requested":"Wed, 23 Jan 2013 14:53:42 +0000" + }, + { + "name":"Victoria", + "id":"victoria", + "status":"good service", + "messages":[ + + ], + "status_starts":"Mon, 21 Jan 2013 19:31:02 +0000", + "status_ends":"", + "status_requested":"Wed, 23 Jan 2013 14:53:42 +0000" + }, + { + "name":"Waterloo & City", + "id":"waterloocity", + "status":"good service", + "messages":[ + + ], + "status_starts":"Mon, 21 Jan 2013 19:58:01 +0000", + "status_ends":"", + "status_requested":"Wed, 23 Jan 2013 14:53:42 +0000" + } + ] + } +} diff --git a/tubefeed.rb b/tubefeed.rb new file mode 100644 index 0000000..532c15b --- /dev/null +++ b/tubefeed.rb @@ -0,0 +1,22 @@ +require 'sinatra' +require 'sinatra/jsonp' +require 'json' + +class Tubefeed < Sinatra::Base + helpers Sinatra::Jsonp + + get '/now.json' do + data = JSON.parse(File.read("data/now.json")) + JSONP data + end + + get '/tomorrow.json' do + data = JSON.parse(File.read("data/tomorrow.json")) + JSONP data + end + + get '/weekend.json' do + data = JSON.parse(File.read("data/weekend.json")) + JSONP data + end +end