dcmetro 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 26b4e560cc10b94ec132c545fdfbaf56ab923126
4
- data.tar.gz: 10e8f6c5602fe8de59a982a6f31d4880be270623
3
+ metadata.gz: dc313326de3ac26b92b875af66674b2ca9a38a30
4
+ data.tar.gz: ac7a212cd6cec05143267728e2e7c66b5a949074
5
5
  SHA512:
6
- metadata.gz: 5e321972a4fecd6ba6b16d6f3ff47ed1a199f7aebbf266fbccf8072af52ecfd979b80a2413f6b09ab522017d9c270878a838be281073f881b81a255727de1d85
7
- data.tar.gz: 345a453a721b5583d19c4e96bdc7ab550d92133ddb62ecba4f00dd97df92b3fac7d6fb9ea5f54e2efd787fbe391d9f7440db4d5e9da4005f9e16309dd3946f40
6
+ metadata.gz: f2c0675d498fdb34f53900671a11af6442efd934e0b318804c470a26bdb3b182d82dda92e08e4fb23bbd88f6065f0c7ce4ab5e1c41177a478a00a697ee5aef8c
7
+ data.tar.gz: e48582d557f17e3d75cc9af0fe576f35864db2f18456c17f0f893d782aa5c835745bbec403538dad9050d69ac92f4230c8365d0e8a58ce6f0c5937ec16840466
data/.coveralls.yml ADDED
@@ -0,0 +1 @@
1
+ service_name: travis-ci
data/.gitignore CHANGED
@@ -11,4 +11,5 @@
11
11
  *.so
12
12
  *.o
13
13
  *.a
14
+ *.gem
14
15
  mkmf.log
data/.travis.yml ADDED
@@ -0,0 +1,14 @@
1
+ language: ruby
2
+ cache: bundler
3
+
4
+ rvm:
5
+ - 2.2.0
6
+
7
+ script: 'bundle exec rake features'
8
+
9
+ notifications:
10
+ email:
11
+ recipients:
12
+ - kcrocken@gmail.com
13
+ on_failure: change
14
+ on_success: never
data/README.md CHANGED
@@ -1,4 +1,7 @@
1
- # DCMetro
1
+ # DCMetro
2
+ [![Gem Version](https://badge.fury.io/rb/dcmetro.svg)](http://badge.fury.io/rb/dcmetro)
3
+ [![Build Status](https://travis-ci.org/kencrocken/dcmetro.svg?branch=master)](https://travis-ci.org/kencrocken/dcmetro)
4
+ [![Coverage Status](https://coveralls.io/repos/kencrocken/dcmetro/badge.svg?branch=master&service=github)](https://coveralls.io/github/kencrocken/dcmetro?branch=master)
2
5
 
3
6
  Rails class and a command line interface to access the Washington, D.C. Metro Rail API. Returns the systemwide alerts, lines, stations and arrival times for the lines at each station.
4
7
 
@@ -18,6 +21,17 @@ Or install it yourself as:
18
21
 
19
22
  $ gem install dcmetro
20
23
 
24
+ ####An ENV variable must be set either in your shell for the CLI or where ever you keep such variables in your Rails apps.
25
+
26
+ The variable needs to be set to `DCMETRO_KEY`
27
+
28
+ It is recommended that a key is requested from https://developer.wmata.com/
29
+
30
+ For the CLI, in the `.bash_profile` set the following:
31
+ `EXPORT DCMETRO_KEY = <<replace with api key from WMATA>>`
32
+
33
+ Don't forget to `source .bash_profile` after making the changes.
34
+
21
35
  ## Usage
22
36
  ###Rails App
23
37
 
@@ -49,9 +63,25 @@ Commands:
49
63
  dcmetro alerts # Display DC Metro system wide alerts.
50
64
  dcmetro help [COMMAND] # Describe available commands or one specific command
51
65
  dcmetro line COLOR # Display metro rail lines, if COLOR, displays rail stations on the COLOR line
52
- dcmetro station NAME # Display metro station train arrival and departure times.
66
+ dcmetro station STARTING,DEST # Display metro station train arrival and departure times and travel info.
53
67
  ```
54
68
 
69
+ ### CHANGELOG
70
+ ##### Changes in 0.0.2
71
+
72
+ 1. Updates the api calls to the new format
73
+ 2. Fixes a bug if multiple stations are returned
74
+ 3. Requires the use of an env variable for the API key
75
+ 4. Requires rest-client
76
+ ##### Changes in 0.0.3
77
+
78
+ 1. Adds station to station travel information
79
+ 2. Expanded test coverage
80
+ 3. Refactors code so that the Information Class merely returns information
81
+ Any parsing is now done in the CLI application
82
+
83
+ # Bug: If no stations are returned app pukes
84
+ # Bug: Pentagon and Pentagon City confuses app
55
85
 
56
86
  ## Contributing
57
87
 
data/Rakefile CHANGED
@@ -1,2 +1,10 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler'
2
+ require 'bundler/gem_tasks'
3
+ require 'cucumber'
4
+ require 'cucumber/rake/task'
5
+
6
+ Cucumber::Rake::Task.new(:features) do |t|
7
+ t.cucumber_opts = "DCMETRO_KEY=#{ENV['DCMETRO_KEY']} features --format pretty"
8
+ end
9
+
2
10
 
data/dcmetro.gemspec CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.version = Dcmetro::VERSION
9
9
  spec.authors = ["Ken Crocken"]
10
10
  spec.email = ["kcrocken@gmail.com"]
11
- spec.summary = %q{Returns DC Metro information, including train schedules.}
12
- spec.description = %q{Returns DC Metro information, including train schedules.}
11
+ spec.summary = %q{Returns DC Metro Rails information, including train schedules.}
12
+ spec.description = %q{Washington, DC Metro Rails information, including lines, stations and arrival/departure predictions.}
13
13
  spec.homepage = "https://github.com/kencrocken/dcmetro"
14
14
  spec.license = "MIT"
15
15
 
@@ -24,4 +24,6 @@ Gem::Specification.new do |spec|
24
24
 
25
25
  spec.add_development_dependency "bundler", "~> 1.6"
26
26
  spec.add_development_dependency "rake"
27
+ spec.add_development_dependency "aruba"
28
+ spec.add_development_dependency "coveralls"
27
29
  end
@@ -0,0 +1,9 @@
1
+ Feature: check dcmetro alerts
2
+
3
+ In order to check alerts
4
+ When I run `dcmetro alerts`
5
+ Then alerts should be display
6
+
7
+ Scenario: check alerts
8
+ When I run `dcmetro alerts`
9
+ Then the stdout should contain "***"
@@ -0,0 +1,43 @@
1
+ @check
2
+ Feature: External calls to WMATA api
3
+
4
+ When I call WMATA api
5
+ Then the response should be "200"
6
+ And should return "JSON"
7
+ And should contain "the desired information"
8
+
9
+
10
+ Scenario: Check Alerts
11
+ When I send a GET request for "WMATA Alerts"
12
+ Then the response should be "200"
13
+ Then should return "JSON"
14
+ And should contain "Incidents"
15
+
16
+ Scenario: Check Lines
17
+ When I send a GET request for "WMATA Lines"
18
+ Then the response should be "200"
19
+ And should return "JSON"
20
+ And should contain "Lines"
21
+
22
+ Scenario: Check Stations on a Line
23
+ When I send a GET request for "WMATA Lines Red"
24
+ Then the response should be "200"
25
+ And should return "JSON"
26
+ And should contain "Stations"
27
+
28
+ Scenario: Check Stations arrival/departure times
29
+ When I send a GET request for "WMATA Station Gallery"
30
+ Then the response should be "200"
31
+ And should return "JSON"
32
+ And should contain "Line"
33
+ And should contain "DestinationName"
34
+ And should contain "Min"
35
+
36
+ @wip
37
+ Scenario: Check travel time, distance and fare between two stations
38
+ When I send a GET request for "WMATA Station Gallery College"
39
+ Then the response should be "200"
40
+ And should return "JSON"
41
+ And should contain "CompositeMiles"
42
+ And should contain "RailFare"
43
+ And should contain "RailTime"
@@ -0,0 +1,21 @@
1
+ Feature: check dcmetro lines
2
+
3
+ In order to check lines
4
+ When I run `dcmetro lines`
5
+ Then metro lines should be displayed
6
+
7
+ Scenario: check lines
8
+ When I run `dcmetro line`
9
+ Then the stdout should contain "Green\nBlue\nSilver\nRed\nOrange\nYellow"
10
+
11
+ Scenario: check lines
12
+ When I run `dcmetro lines`
13
+ Then the stdout should contain "Green\nBlue\nSilver\nRed\nOrange\nYellow"
14
+
15
+ Scenario: check red line for Gallery Place
16
+ When I run `dcmetro line red`
17
+ Then the stdout should contain "Gallery"
18
+
19
+ Scenario: check green line for Gallery Place
20
+ When I run `dcmetro line green`
21
+ Then the stdout should contain "Gallery"
@@ -0,0 +1,18 @@
1
+ Feature: check dcmetro station predictions
2
+
3
+ In order to station predictions
4
+ When I run `dcmetro station STATION`
5
+ Then train predictions for STATION should be displayed
6
+
7
+ Scenario: check gallery predictions
8
+ When I run `dcmetro station gallery`
9
+ Then the stdout should contain "===== Gallery Pl-Chinatown ====="
10
+
11
+ Scenario: check predictions from partial name
12
+ When I run `dcmetro station gall`
13
+ Then the stdout should contain "===== Gallery Pl-Chinatown ====="
14
+
15
+ Scenario: check predictions returning more than one station
16
+ When I run `dcmetro station g` interactively
17
+ And I type "5"
18
+ Then the stdout should contain "===== Gallery Pl-Chinatown ====="
@@ -0,0 +1,28 @@
1
+ When(/^I send a GET request for "([^"]*)"$/) do |path|
2
+ case path
3
+ when "WMATA Alerts"
4
+ @last_response = X.alerts
5
+ when "WMATA Lines"
6
+ @last_response = X.line
7
+ when "WMATA Lines Red"
8
+ @last_response = X.line "Red"
9
+ when "WMATA Station Gallery"
10
+ @last_response = X.station "Gallery place"
11
+ when "WMATA Station Gallery College"
12
+ @last_response = X.station "Gallery", "College"
13
+ else
14
+ false
15
+ end
16
+ end
17
+
18
+ Then(/^the response should be "([^"]*)"$/) do |status|
19
+ @last_response.code == status.to_i
20
+ end
21
+
22
+ Then(/^should return "([^"]*)"$/) do |arg1|
23
+ valid_json?(@last_response)
24
+ end
25
+
26
+ Then(/^should contain "([^"]*)"$/) do |arg1|
27
+ @last_response[arg1]
28
+ end
@@ -0,0 +1,24 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+
4
+ require 'aruba/cucumber'
5
+ require 'json'
6
+ require 'rest-client'
7
+ require 'dcmetro'
8
+
9
+ DCMETRO_KEY=ENV['DCMETRO_KEY']
10
+ API_KEY = DCMETRO_KEY
11
+ BASE_URL="http://api.wmata.com"
12
+
13
+ X = DCMetro::Information.new
14
+
15
+ Before ("@check ") do
16
+ def valid_json?(json)
17
+ begin
18
+ JSON.parse(json)
19
+ true
20
+ rescue
21
+ false
22
+ end
23
+ end
24
+ end
@@ -1,6 +1,6 @@
1
1
  require 'thor'
2
2
  require 'json'
3
- require 'rest_client'
3
+ require 'rest-client'
4
4
 
5
5
  #
6
6
  # This is the command line interface using Thor
@@ -16,7 +16,9 @@ module DCMetro
16
16
  # => *** Alert! Alert! ***
17
17
 
18
18
  x = DCMetro::Information.new
19
- display_alerts x.alerts
19
+
20
+ alerts = parse_json x.alerts
21
+ display_alerts alerts
20
22
  end
21
23
 
22
24
  desc 'line COLOR', 'Display metro rail lines, if COLOR, displays rail stations on the COLOR line'
@@ -31,15 +33,26 @@ module DCMetro
31
33
  x = DCMetro::Information.new
32
34
 
33
35
  if !color.nil?
34
- x.line(color).each { |station| puts station['Name']}
36
+ line = parse_json x.line(color)
37
+ line["Stations"].each { |station| puts station['Name']}
35
38
  else
36
- x.line.each { |line| puts line["DisplayName"]}
39
+ lines = parse_json x.line
40
+ lines["Lines"].each do |line|
41
+ color = get_color(line['LineCode'])
42
+
43
+ puts "#{color}#{line['DisplayName']}#{COLOR_OFF}"
44
+ end
37
45
  end
38
46
  end
39
47
 
48
+ desc "lines", "invokes line method"
49
+ def lines color=nil
50
+ invoke :line
51
+ end
52
+
40
53
  desc 'station NAME', 'Display metro station train arrival and departure times.'
41
54
  method_option :alerts, :aliases => '-a', :type => :boolean, :description => "Display Metro wide alerts."
42
- def station(name)
55
+ def station(from, to=nil)
43
56
  #
44
57
  # $dcmetro station Greenbelt
45
58
  # => Displays the departure and arrival times at the Greenbelt Station
@@ -51,20 +64,48 @@ module DCMetro
51
64
  x = DCMetro::Information.new
52
65
 
53
66
  if options[:alerts]
54
- y = x.alerts
67
+ y = parse_json x.alerts
55
68
  display_alerts y
56
69
  end
57
70
 
58
- x = x.station(name)
59
- train_time = x['Trains'].empty? ? "Sorry, there is no information for #{name}." : display_trains(x['Trains'])
60
- puts train_time if !train_time.kind_of?(Array)
61
- train_time
71
+ if to.nil?
72
+ x = parse_json x.station(from)
73
+ train_time = x['Trains'].empty? ? "Sorry, there is no information for #{from}." : display_trains(x['Trains'])
74
+ puts train_time if !train_time.kind_of?(Array)
75
+ train_time
76
+ else
77
+ x = x.station(from,to)
78
+ y = parse_json x
79
+ display_travel_info y
80
+
81
+ end
62
82
  end
63
83
 
64
84
  private
65
85
 
66
86
  no_commands do
67
87
 
88
+ def get_color line_code
89
+ case line_code
90
+ when "GR"
91
+ GREEN
92
+ when "BL"
93
+ BLUE
94
+ when "OR"
95
+ ORANGE
96
+ when "SV"
97
+ SILVER
98
+ when "YL"
99
+ YELLOW
100
+ else
101
+ RED
102
+ end
103
+ end
104
+
105
+ def parse_json response
106
+ JSON.parse(response)
107
+ end
108
+
68
109
  def display_alerts alerts
69
110
  #
70
111
  # Formats the display of the alerts
@@ -87,6 +128,14 @@ module DCMetro
87
128
  end
88
129
  end
89
130
 
131
+ def display_travel_info information
132
+ information = information['StationToStationInfos'][0]
133
+ railFare = information['RailFare']
134
+ puts "Distance: #{information['CompositeMiles']} Miles\n"
135
+ puts "Estimate Travel Time: #{information['RailTime']} Minutes\n"
136
+ puts "\n*** Fare Information ***\nOff Peak Time: $#{railFare['OffPeakTime']}\nPeak Time: $#{railFare['PeakTime']}\nSenior/Disabled: $#{railFare['SeniorDisabled']}"
137
+ end
138
+
90
139
  end
91
140
 
92
141
  end
@@ -1,5 +1,5 @@
1
1
  module Dcmetro
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
4
4
 
5
5
  ### Changes in 0.0.2
@@ -10,4 +10,16 @@ end
10
10
  #
11
11
  # Requires the use of an env variable for the API key
12
12
  #
13
- # Requires rest-client
13
+ # Requires rest-client
14
+
15
+ ### Changes in 0.0.3
16
+ #
17
+ # Adds station to station travel information
18
+ #
19
+ # Expanded test coverage
20
+ #
21
+ # Refactors code so that the Information Class merely returns information
22
+ # Any parsing is now done in the CLI application
23
+ #
24
+ # Bug: If no stations are returned app pukes
25
+ # Bug: Pentagon and Pentagon City confuses app
data/lib/dcmetro.rb CHANGED
@@ -3,21 +3,27 @@ require_relative 'dcmetro/cli/application'
3
3
 
4
4
  module DCMetro
5
5
  class Information
6
- attr_accessor :metro_incidents, :metro_lines, :metro_stations, :station_code, :metro_time
6
+ attr_accessor :metro_incidents, :metro_lines, :metro_stations, :station_code, :metro_time, :travel_info
7
+
8
+ BASE_URL="https://api.wmata.com"
7
9
 
8
10
  def initialize
9
- @metro_incidents = JSON.parse(RestClient.get "http://api.wmata.com/Incidents.svc/json/Incidents?api_key=#{API_KEY}&subscription-key=#{API_KEY}")
10
- @metro_lines = JSON.parse(RestClient.get "http://api.wmata.com/Rail.svc/json/JLines?api_key=#{API_KEY}&subscription-key=#{API_KEY}")
11
+ @metro_incidents = metro_incidents
12
+ @metro_lines = metro_lines
11
13
  @metro_stations = metro_stations
12
14
  @station_code = ""
13
15
  @metro_time = metro_time
16
+ @travel_info = travel_info
14
17
  end
15
18
 
16
19
  def alerts
17
20
  #
18
21
  # Makes the api call and returns the alerts
22
+ @metro_incidents = RestClient.get "#{BASE_URL}/Incidents.svc/json/Incidents", :params => {
23
+ "api_key" => API_KEY,
24
+ "subscription-key" => API_KEY
25
+ }
19
26
 
20
- @metro_incidents
21
27
  end ### alerts
22
28
 
23
29
  def line(color=nil)
@@ -27,14 +33,44 @@ module DCMetro
27
33
 
28
34
  if !color.nil?
29
35
  color = color.downcase
30
- @metro_stations = JSON.parse(RestClient.get "http://api.wmata.com/Rail.svc/json/jStations?LineCode=#{color}&api_key=#{API_KEY}&subscription-key=#{API_KEY}")
31
- @metro_stations['Stations']
36
+
37
+ case color
38
+ when "red"
39
+ color = "RD"
40
+ when "green"
41
+ color = "GR"
42
+ when "yellow"
43
+ color = "YL"
44
+ when "blue"
45
+ color = "BL"
46
+ when "orange"
47
+ color = "OR"
48
+ else
49
+ color = "SV"
50
+ end
51
+
52
+ @metro_stations = RestClient.get "#{BASE_URL}/Rail.svc/json/jStations", :params => {
53
+ "LineCode" => color,
54
+ "api_key" => API_KEY,
55
+ "subscription-key" => API_KEY
56
+ }
57
+
58
+ # @metro_stations = parse_json metro_stations
59
+ # @metro_stations['Stations']
32
60
  else
33
- @metro_lines['Lines']
61
+ @metro_lines = RestClient.get "#{BASE_URL}/Rail.svc/json/JLines", :params => {
62
+ "api_key" => API_KEY,
63
+ "subscription-key" => API_KEY
64
+ }
65
+
66
+ # @metro_lines = metro_lines
67
+ # @metro_lines['Lines']
68
+
69
+ # @metro_lines = get_all_stations
34
70
  end
35
71
  end ### line
36
72
 
37
- def station(name)
73
+ def station(source,destination=nil)
38
74
  #
39
75
  # Makes the api call to return all stations in the Metro rail system and
40
76
  # then grabs the specific station passed by the user
@@ -43,43 +79,85 @@ module DCMetro
43
79
  stations_check = []
44
80
 
45
81
  # forming the api call
46
- url = "https://api.wmata.com/Rail.svc/json/jStations?api_key=#{API_KEY}&subscription-key=#{API_KEY}"
47
- @metro_stations = JSON.parse(RestClient.get "#{url}")
48
-
49
- # Iterates through the response checking if the station name passed by the user
50
- # is included in the return response
51
- @metro_stations['Stations'].each do |station_name|
52
- if station_name['Name'].downcase.include? name.downcase
53
-
54
- # if the names of the station matches the user's station, the station
55
- # is pushed to an array
56
- stations_check.push(station_name)
82
+ @metro_stations = JSON.parse(get_all_stations)
83
+
84
+ if destination.nil?
85
+ # Iterates through the response checking if the station name passed by the user
86
+ # is included in the return response
87
+ @metro_stations['Stations'].each do |station_name|
88
+ if station_name['Name'].downcase.include? source.downcase
89
+ # if the names of the station matches the user's station, the station
90
+ # is pushed to an array
91
+ stations_check.push(station_name)
92
+ end
57
93
  end
58
- end
59
-
60
- # Oddly, the api seems to return some stations twice - since some stations have more than
61
- # one line. Though the additional station information is contained in each instance of the
62
- # station.
63
- # We limit our array to only unique station names, hopefully limiting the array to a single item
64
- stations_check.uniq! { |station| station['Name'] }
65
-
66
- # If the array length is greater than 1, we ask the user to be more specific and
67
- # return the names of the stations
68
- if stations_check.length > 1
69
- puts "****Multiple stations found****"
70
- stations_check.each do |station|
71
- puts station['Name']
72
- puts station
94
+ # Oddly, the api seems to return some stations twice - since some stations have more than
95
+ # one line. Though the additional station information is contained in each instance of the
96
+ # station.
97
+ # We limit our array to only unique station names, hopefully limiting the array to a single item
98
+ stations_check.uniq! { |station| station['Name'] }
99
+
100
+ # If the array length is greater than 1, we ask the user to be more specific and
101
+ # return the names of the stations
102
+ if stations_check.length > 1
103
+ puts "****Multiple stations found****"
104
+ stations_check.each_with_index do |station,i|
105
+ puts "#{i} #{station['Name']}"
106
+ end
107
+ puts "****Please be more specific, enter the number below ****"
108
+ specific = STDIN.gets.chomp.to_i
109
+ station_time stations_check[specific]
110
+ else
111
+ # We pass the station the station_time method to grab the predictions
112
+ station_time stations_check[0]
73
113
  end
74
- abort "****Please be more specific****"
75
114
  else
76
- # We pass the station the station_time method to grab the predictions
77
- station_time stations_check[0]
115
+ stations = [source, destination]
116
+ station_code = []
117
+ stations.each do |station|
118
+ @metro_stations['Stations'].each do |station_name|
119
+ if station_name['Name'].downcase.include? station.downcase
120
+ station_code << station_name
121
+ end
122
+ end
123
+ end
124
+ station_code.uniq! { |station| station['Name'] }
125
+ if station_code.length > 2
126
+ puts "****Multiple stations found****"
127
+ station_code.each_with_index do |station,i|
128
+ puts "#{i} #{station['Name']}"
129
+ end
130
+ puts "****Please be more specific****"
131
+ puts "Enter the number of your starting station."
132
+ start = STDIN.gets.chomp.to_i
133
+ puts "Enter the number of your destination station."
134
+ destination = STDIN.gets.chomp.to_i
135
+ @travel_info = RestClient.get "#{BASE_URL}/Rail.svc/json/jSrcStationToDstStationInfo", :params => {
136
+ "FromStationCode" => station_code[start]['Code'],
137
+ "ToStationCode" => station_code[destination]['Code'],
138
+ "api_key" => API_KEY,
139
+ "subscription-key" => API_KEY
140
+ }
141
+ else
142
+ @travel_info = RestClient.get "#{BASE_URL}/Rail.svc/json/jSrcStationToDstStationInfo", :params => {
143
+ "FromStationCode" => station_code[0]['Code'],
144
+ "ToStationCode" => station_code[1]['Code'],
145
+ "api_key" => API_KEY,
146
+ "subscription-key" => API_KEY
147
+ }
148
+ end
78
149
  end
79
150
  end ### station
80
151
 
81
152
  private
82
153
 
154
+ def get_all_stations
155
+ return RestClient.get "#{BASE_URL}/Rail.svc/json/jStations", :params => {
156
+ "api_key" => API_KEY,
157
+ "subscription-key" => API_KEY
158
+ }
159
+ end
160
+
83
161
  #
84
162
  # This makes an api call to grab the train arrival and departure predictions.
85
163
  # If more than one line is present at a station, such is concatenated and
@@ -97,8 +175,10 @@ module DCMetro
97
175
  end
98
176
 
99
177
  # The call to the api is made and the prediction times are returned
100
- url = "http://api.wmata.com/StationPrediction.svc/json/GetPrediction/#{@station_code}?api_key=#{API_KEY}&subscription-key=#{API_KEY}"
101
- @metro_time = JSON.parse(RestClient.get "#{url}")
178
+ @metro_time = RestClient.get "#{BASE_URL}/StationPrediction.svc/json/GetPrediction/#{@station_code}", :params => {
179
+ "api_key" => API_KEY,
180
+ "subscription-key" => API_KEY
181
+ }
102
182
  @metro_time
103
183
  end
104
184
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dcmetro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ken Crocken
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-09 00:00:00.000000000 Z
11
+ date: 2016-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -80,7 +80,36 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
- description: Returns DC Metro information, including train schedules.
83
+ - !ruby/object:Gem::Dependency
84
+ name: aruba
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: coveralls
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: Washington, DC Metro Rails information, including lines, stations and
112
+ arrival/departure predictions.
84
113
  email:
85
114
  - kcrocken@gmail.com
86
115
  executables:
@@ -88,13 +117,21 @@ executables:
88
117
  extensions: []
89
118
  extra_rdoc_files: []
90
119
  files:
120
+ - ".coveralls.yml"
91
121
  - ".gitignore"
122
+ - ".travis.yml"
92
123
  - Gemfile
93
124
  - LICENSE.txt
94
125
  - README.md
95
126
  - Rakefile
96
127
  - bin/dcmetro
97
128
  - dcmetro.gemspec
129
+ - features/alerts.feature
130
+ - features/external.feature
131
+ - features/lines.feature
132
+ - features/station.feature
133
+ - features/step_definitions/api_test_steps.rb
134
+ - features/support/env.rb
98
135
  - lib/dcmetro.rb
99
136
  - lib/dcmetro/cli/application.rb
100
137
  - lib/dcmetro/version.rb
@@ -121,5 +158,11 @@ rubyforge_project:
121
158
  rubygems_version: 2.4.5
122
159
  signing_key:
123
160
  specification_version: 4
124
- summary: Returns DC Metro information, including train schedules.
125
- test_files: []
161
+ summary: Returns DC Metro Rails information, including train schedules.
162
+ test_files:
163
+ - features/alerts.feature
164
+ - features/external.feature
165
+ - features/lines.feature
166
+ - features/station.feature
167
+ - features/step_definitions/api_test_steps.rb
168
+ - features/support/env.rb