tramtracker 0.0.4 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 00d4ac7aef9191bf3c090cdf0fcada77d78efc7e
4
+ data.tar.gz: d3505d11a726c4922b20d1c33f21b3b467abee15
5
+ SHA512:
6
+ metadata.gz: b3b7fd27958fe7ed5600beb784d4054d8307cc57d3b37ee596a0fe162b95fe736e262b891810be3a355ce64325f8917aa5acdf499a4d399870d4801cb9dea67b
7
+ data.tar.gz: e335e4e39190c1b6360894a03ddefdb42e54dc6fa8a0e01c8de10b65a6e55c01c6d7a5940c6ad39f6481d8b2f02a97622e5cd9e6e6904e760137e1b9f97f242d
@@ -1 +1 @@
1
- 1.9.3
1
+ 2.0.0-p353
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  Tramtracker
2
2
  ===========
3
3
 
4
+ [![Code Climate](https://codeclimate.com/github/stevenocchipinti/tramtracker.png)](https://codeclimate.com/github/stevenocchipinti/tramtracker)
5
+
4
6
  A commandline tool for Melbourne's TramTracker
5
7
 
6
8
 
@@ -34,5 +36,5 @@ tramtracker -h
34
36
  Configuration
35
37
  -------------
36
38
 
37
- You may create a `~/.tramtracker` file containing the <stop-id> and omit the
39
+ You may create a `~/.tramtracker` file containing the `stop-id` and omit the
38
40
  command line argument
data/Rakefile CHANGED
@@ -1 +1,8 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'rake/testtask'
3
+
4
+ task :default => [:test]
5
+
6
+ Rake::TestTask.new do |t|
7
+ t.pattern = "spec/**/*_spec.rb"
8
+ end
@@ -3,7 +3,6 @@ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
3
3
 
4
4
  require 'optparse'
5
5
  require 'tramtracker'
6
- require 'formatters'
7
6
 
8
7
 
9
8
  formatter_class = Formatters::PrintFormatter
@@ -17,6 +16,11 @@ optparse = OptionParser.new do |opts|
17
16
  formatter_class = Formatters::PollingFormatter
18
17
  end
19
18
 
19
+ opts.on('-v', '--version', 'Display the version of the gem') do
20
+ puts "Tramtracker v#{Tramtracker::VERSION}"
21
+ exit
22
+ end
23
+
20
24
  opts.on('-h', '--help', 'Display this screen') do
21
25
  puts opts
22
26
  exit
@@ -26,7 +30,7 @@ optparse.parse!
26
30
 
27
31
 
28
32
  id = ARGV[0]
29
- id ||= File.read(dotfile) if File.exists?(dotfile)
33
+ id ||= File.read(dotfile).chomp! if File.exists?(dotfile)
30
34
  unless id
31
35
  puts optparse
32
36
  exit 1
@@ -34,7 +38,7 @@ end
34
38
 
35
39
 
36
40
  begin
37
- formatter_class.new(Tramtracker.new(id)).report
41
+ formatter_class.new(Tramtracker::API.new(id)).report
38
42
  rescue Interrupt
39
43
  # Prevent the Exception stack trace from being printed upon ctrl-c
40
44
  puts # This just puts the next prompt on its own line
@@ -1,26 +1,3 @@
1
- require 'open-uri'
2
-
3
- class Tramtracker
4
- attr_accessor :stop_id
5
-
6
- def initialize(stop_id)
7
- @stop_id = stop_id
8
- end
9
-
10
- def get
11
- regex = /\d*\) Rte (\d*)<br>\r\n(\d*)/
12
- open(url).read.scan(regex).collect do |route, minutes|
13
- {
14
- route: route,
15
- minutes: minutes
16
- }
17
- end
18
- end
19
-
20
- private
21
-
22
- def url
23
- "http://www.tramtracker.com.au/?id=#{@stop_id}"
24
- end
25
-
26
- end
1
+ require 'tramtracker/api'
2
+ require 'tramtracker/formatters'
3
+ require 'tramtracker/version'
@@ -0,0 +1,42 @@
1
+ require 'open-uri'
2
+ require 'json'
3
+ require 'date'
4
+
5
+ module Tramtracker
6
+ class API
7
+ DATE_FORMAT = "/Date(%Q%z)/"
8
+ attr_accessor :stop_id
9
+
10
+ def initialize(stop_id)
11
+ @stop_id = stop_id
12
+ end
13
+
14
+ def get
15
+ api_response["responseObject"].collect do |tram|
16
+ {
17
+ route: tram["RouteNo"],
18
+ minutes: minutes_until(tram["PredictedArrivalDateTime"])
19
+ }
20
+ end
21
+ end
22
+
23
+
24
+ private
25
+
26
+ def api_url
27
+ "http://www.tramtracker.com.au/Controllers/GetNextPredictionsForStop.ashx?stopNo=#{@stop_id}&routeNo=0&isLowFloor=false"
28
+ end
29
+
30
+ def api_response
31
+ JSON.parse(open(api_url).read).tap do |response|
32
+ @request_time = DateTime.strptime(response["timeResponded"], DATE_FORMAT)
33
+ end
34
+ end
35
+
36
+ def minutes_until(timestamp)
37
+ arrival_time = DateTime.strptime(timestamp, DATE_FORMAT)
38
+ ((arrival_time - @request_time) * 24 * 60).to_i
39
+ end
40
+
41
+ end
42
+ end
@@ -0,0 +1,2 @@
1
+ require "tramtracker/formatters/print_formatter"
2
+ require "tramtracker/formatters/polling_formatter"
@@ -0,0 +1,3 @@
1
+ module Tramtracker
2
+ VERSION = "1.0.0"
3
+ end
@@ -0,0 +1 @@
1
+ {"errorMessage":null,"hasError":false,"hasResponse":true,"responseObject":[{"__type":"NextPredictedRoutesCollectionInfo","AirConditioned":false,"Destination":"Melb Uni","DisplayAC":false,"DisruptionMessage":{"DisplayType":"Text","MessageCount":0,"Messages":[]},"HasDisruption":false,"HasSpecialEvent":false,"HeadBoardRouteNo":"64","InternalRouteNo":64,"IsLowFloorTram":false,"IsTTAvailable":true,"PredictedArrivalDateTime":"\/Date(1393935009000+1100)\/","RouteNo":"64","SpecialEventMessage":"","TripID":0,"VehicleNo":78},{"__type":"NextPredictedRoutesCollectionInfo","AirConditioned":false,"Destination":"Melb Uni","DisplayAC":false,"DisruptionMessage":{"DisplayType":"Text","MessageCount":0,"Messages":[]},"HasDisruption":false,"HasSpecialEvent":false,"HeadBoardRouteNo":"64","InternalRouteNo":64,"IsLowFloorTram":false,"IsTTAvailable":true,"PredictedArrivalDateTime":"\/Date(1393936260000+1100)\/","RouteNo":"64","SpecialEventMessage":"","TripID":0,"VehicleNo":180},{"__type":"NextPredictedRoutesCollectionInfo","AirConditioned":false,"Destination":"Melb Uni","DisplayAC":false,"DisruptionMessage":{"DisplayType":"Text","MessageCount":0,"Messages":[]},"HasDisruption":false,"HasSpecialEvent":false,"HeadBoardRouteNo":"64","InternalRouteNo":64,"IsLowFloorTram":false,"IsTTAvailable":true,"PredictedArrivalDateTime":"\/Date(1393958220000+1100)\/","RouteNo":"64","SpecialEventMessage":"","TripID":0,"VehicleNo":-1}],"timeRequested":"\/Date(1393934736826+1100)\/","timeResponded":"\/Date(1393934737712+1100)\/","webMethodCalled":"GetNextPredictedRoutesCollection"}
@@ -0,0 +1,20 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe Tramtracker::API do
4
+
5
+ before do
6
+ @tramtracker = Tramtracker::API.new(1111)
7
+ @mock_response = File.read("spec/fixtures/tramtracker.json")
8
+ end
9
+
10
+ describe ".get" do
11
+ it "returns an array of hashes with route and time data" do
12
+ @tramtracker.stub :open, OpenStruct.new({:read => @mock_response}) do
13
+ @tramtracker.get.must_include({route: "64", minutes: 4})
14
+ @tramtracker.get.must_include({route: "64", minutes: 25})
15
+ @tramtracker.get.must_include({route: "64", minutes: 391})
16
+ end
17
+ end
18
+ end
19
+
20
+ end
@@ -0,0 +1,4 @@
1
+ require 'minitest/autorun'
2
+ require 'ostruct'
3
+
4
+ require 'tramtracker'
@@ -1,10 +1,11 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require './lib/tramtracker/version'
4
5
 
5
6
  Gem::Specification.new do |gem|
6
7
  gem.name = "tramtracker"
7
- gem.version = "0.0.4"
8
+ gem.version = Tramtracker::VERSION
8
9
  gem.authors = ["Steven Occhipinti"]
9
10
  gem.email = ["dev@stevenocchipinti.com"]
10
11
  gem.description = "A commandline tool for Melbourne's TramTracker"
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tramtracker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
5
- prerelease:
4
+ version: 1.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Steven Occhipinti
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-06-08 00:00:00.000000000 Z
11
+ date: 2014-03-04 00:00:00.000000000 Z
13
12
  dependencies: []
14
13
  description: A commandline tool for Melbourne's TramTracker
15
14
  email:
@@ -25,37 +24,41 @@ files:
25
24
  - README.md
26
25
  - Rakefile
27
26
  - bin/tramtracker
28
- - lib/formatters.rb
29
- - lib/formatters/polling_formatter.rb
30
- - lib/formatters/print_formatter.rb
31
27
  - lib/tramtracker.rb
32
- - test/lib/tramtracker_test.rb
33
- - test/test_helper.rb
28
+ - lib/tramtracker/api.rb
29
+ - lib/tramtracker/formatters.rb
30
+ - lib/tramtracker/formatters/polling_formatter.rb
31
+ - lib/tramtracker/formatters/print_formatter.rb
32
+ - lib/tramtracker/version.rb
33
+ - spec/fixtures/tramtracker.json
34
+ - spec/lib/tramtracker_spec.rb
35
+ - spec/spec_helper.rb
34
36
  - tramtracker.gemspec
35
37
  homepage: https://github.com/stevenocchipinti/tramtracker
36
38
  licenses: []
39
+ metadata: {}
37
40
  post_install_message:
38
41
  rdoc_options: []
39
42
  require_paths:
40
43
  - lib
41
44
  required_ruby_version: !ruby/object:Gem::Requirement
42
- none: false
43
45
  requirements:
44
- - - ! '>='
46
+ - - '>='
45
47
  - !ruby/object:Gem::Version
46
48
  version: '0'
47
49
  required_rubygems_version: !ruby/object:Gem::Requirement
48
- none: false
49
50
  requirements:
50
- - - ! '>='
51
+ - - '>='
51
52
  - !ruby/object:Gem::Version
52
53
  version: '0'
53
54
  requirements: []
54
55
  rubyforge_project:
55
- rubygems_version: 1.8.25
56
+ rubygems_version: 2.2.2
56
57
  signing_key:
57
- specification_version: 3
58
+ specification_version: 4
58
59
  summary: CLI TramTracker
59
60
  test_files:
60
- - test/lib/tramtracker_test.rb
61
- - test/test_helper.rb
61
+ - spec/fixtures/tramtracker.json
62
+ - spec/lib/tramtracker_spec.rb
63
+ - spec/spec_helper.rb
64
+ has_rdoc:
@@ -1,2 +0,0 @@
1
- require "formatters/print_formatter"
2
- require "formatters/polling_formatter"
@@ -1,25 +0,0 @@
1
- require_relative '../test_helper'
2
-
3
- describe Tramtracker do
4
-
5
- before do
6
- @tramtracker = Tramtracker.new(1725)
7
- @mock_response = <<-EOS
8
- ID: 1725<br>\r\n
9
- 1) Rte 100<br>\r\n1 mins *<br>\r\n
10
- 2) Rte 101<br>\r\n10 mins *!<br>\r\n
11
- 3) Rte 102<br>\r\n20 mins *!<br>"
12
- EOS
13
- end
14
-
15
- describe ".get" do
16
- it "returns an array of hashes with route and time data" do
17
- @tramtracker.stub :open, OpenStruct.new({:read => @mock_response}) do
18
- @tramtracker.get.must_include({route: "100", minutes: "1"})
19
- @tramtracker.get.must_include({route: "101", minutes: "10"})
20
- @tramtracker.get.must_include({route: "102", minutes: "20"})
21
- end
22
- end
23
- end
24
-
25
- end
@@ -1,3 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'ostruct'
3
- require File.expand_path('../../lib/tramtracker.rb', __FILE__)