next_muni 0.1.3 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,5 @@
1
+ v0.1.4 Now you can query a transit agency for all routes. Minor refactoring.
2
+
1
3
  v0.1.3 Separated out directions and reorganized the get_stops hash.
2
4
  Better route querying
3
5
 
data/Manifest CHANGED
@@ -2,6 +2,5 @@ CHANGELOG
2
2
  README.rdoc
3
3
  Rakefile
4
4
  lib/next_muni.rb
5
- lib/next_muni/api.rb
6
5
  next_muni.gemspec
7
6
  Manifest
@@ -9,6 +9,12 @@ Questions are welcome on the github wiki for now – https://github.com/hjhart/
9
9
 
10
10
  == Usage
11
11
 
12
+ # get_routes(agency)
13
+
14
+ Gets a list of all routes (use the ID provided for querying get_stops)
15
+
16
+ # try NextMuni.get_routes('sf-muni') or NextMuni.get_routes('actransit')
17
+
12
18
  # get_stops(route_no)
13
19
  NextMuni.get_stops(45)
14
20
 
data/Rakefile CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'rake'
3
3
  require 'echoe'
4
4
 
5
- Echoe.new('next_muni', '0.1.3') do |p|
5
+ Echoe.new('next_muni', '0.1.5') do |p|
6
6
  p.description = "A gem to access San Francisco's Next Muni API easily"
7
7
  p.url = "http://www.github.com/hjhart/next_muni_gem"
8
8
  p.author = "James Hart"
@@ -3,11 +3,10 @@ require 'rubygems'
3
3
  require 'rexml/document'
4
4
  require 'net/http'
5
5
 
6
- require 'next_muni/api'
7
6
 
8
7
  module NextMuni
9
- def self.get_stops(route)
10
- url = NextMuni::Api.build_url(route.upcase)
8
+ def self.get_stops(route, stop_no=nil, agency='sf-muni', direction_id=nil)
9
+ url = NextMuni.build_url(route.upcase, stop_no, agency, direction_id)
11
10
  xml = Net::HTTP.get(URI.parse(url))
12
11
  doc = REXML::Document.new(xml)
13
12
  directions = []
@@ -32,8 +31,8 @@ module NextMuni
32
31
  directions
33
32
  end
34
33
 
35
- def self.get_times(route_no, stop_no, direction_id=nil)
36
- url = NextMuni::Api.build_url(route_no.upcase, stop_no, direction_id)
34
+ def self.get_times(route_no, stop_no, agency='sf-muni', direction_id=nil)
35
+ url = NextMuni.build_url(route_no.upcase, stop_no, agency, direction_id)
37
36
  xml = Net::HTTP.get(URI.parse(url))
38
37
 
39
38
  doc = REXML::Document.new(xml)
@@ -43,4 +42,38 @@ module NextMuni
43
42
  end
44
43
  times
45
44
  end
45
+
46
+ # Some agencies: sf-muni, actransit
47
+ def self.get_routes(agency)
48
+ url = "http://webservices.nextbus.com/service/publicXMLFeed?command=routeList&a=#{agency}"
49
+ xml = Net::HTTP.get(URI.parse(url))
50
+
51
+ doc = REXML::Document.new(xml)
52
+ routes = []
53
+
54
+ doc.elements.each('body/route') do |route|
55
+ routes << {
56
+ :id => route.attributes['tag'],
57
+ :title => route.attributes['title']
58
+ }
59
+ end
60
+ routes
61
+ end
62
+
63
+ # get stops
64
+ # http://webservices.nextbus.com/service/publicXMLFeed?command=routeConfig&a=sf-muni&r=45
65
+ # get times
66
+ # http://webservices.nextbus.com/service/publicXMLFeed?command=predictions&a=sf-muni&r=<route tag>&d=<direction tag>&s=<stop tag>
67
+ # multiples
68
+ # http://webservices.nextbus.com/service/publicXMLFeed?command=predictionsForMultiStops&a=sf-muni&stops=45|45_IB2|6787&stops=45|45_IB2|6771
69
+ def self.build_url(route_number, stop_id = nil, agency='sf-muni', dir_id = nil)
70
+ if stop_id.nil?
71
+ url = "http://webservices.nextbus.com/service/publicXMLFeed?command=routeConfig&a=#{agency}&r=#{route_number}"
72
+ else
73
+ url = "http://webservices.nextbus.com/service/publicXMLFeed?command=predictions&a=#{agency}&r=#{route_number}&s=#{stop_id}"
74
+ url += "&d=#{dir_id}" unless dir_id.nil?
75
+ end
76
+ url
77
+ end
78
+
46
79
  end
@@ -2,20 +2,20 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{next_muni}
5
- s.version = "0.1.3"
5
+ s.version = "0.1.5"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
- s.authors = ["James Hart"]
9
- s.date = %q{2011-03-18}
8
+ s.authors = [%q{James Hart}]
9
+ s.date = %q{2011-09-16}
10
10
  s.description = %q{A gem to access San Francisco's Next Muni API easily}
11
11
  s.email = %q{hjhart@gmail.com}
12
- s.extra_rdoc_files = ["CHANGELOG", "README.rdoc", "lib/next_muni.rb", "lib/next_muni/api.rb"]
13
- s.files = ["CHANGELOG", "README.rdoc", "Rakefile", "lib/next_muni.rb", "lib/next_muni/api.rb", "next_muni.gemspec", "Manifest"]
12
+ s.extra_rdoc_files = [%q{CHANGELOG}, %q{README.rdoc}, %q{lib/next_muni.rb}]
13
+ s.files = [%q{CHANGELOG}, %q{README.rdoc}, %q{Rakefile}, %q{lib/next_muni.rb}, %q{next_muni.gemspec}, %q{Manifest}]
14
14
  s.homepage = %q{http://www.github.com/hjhart/next_muni_gem}
15
- s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Next_muni", "--main", "README.rdoc"]
16
- s.require_paths = ["lib"]
15
+ s.rdoc_options = [%q{--line-numbers}, %q{--inline-source}, %q{--title}, %q{Next_muni}, %q{--main}, %q{README.rdoc}]
16
+ s.require_paths = [%q{lib}]
17
17
  s.rubyforge_project = %q{next_muni}
18
- s.rubygems_version = %q{1.5.3}
18
+ s.rubygems_version = %q{1.8.9}
19
19
  s.summary = %q{A gem to access San Francisco's Next Muni API easily}
20
20
 
21
21
  if s.respond_to? :specification_version then
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: next_muni
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.3
5
+ version: 0.1.5
6
6
  platform: ruby
7
7
  authors:
8
8
  - James Hart
@@ -10,8 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-03-18 00:00:00 -07:00
14
- default_executable:
13
+ date: 2011-09-16 00:00:00 Z
15
14
  dependencies: []
16
15
 
17
16
  description: A gem to access San Francisco's Next Muni API easily
@@ -24,16 +23,13 @@ extra_rdoc_files:
24
23
  - CHANGELOG
25
24
  - README.rdoc
26
25
  - lib/next_muni.rb
27
- - lib/next_muni/api.rb
28
26
  files:
29
27
  - CHANGELOG
30
28
  - README.rdoc
31
29
  - Rakefile
32
30
  - lib/next_muni.rb
33
- - lib/next_muni/api.rb
34
31
  - next_muni.gemspec
35
32
  - Manifest
36
- has_rdoc: true
37
33
  homepage: http://www.github.com/hjhart/next_muni_gem
38
34
  licenses: []
39
35
 
@@ -62,7 +58,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
62
58
  requirements: []
63
59
 
64
60
  rubyforge_project: next_muni
65
- rubygems_version: 1.5.3
61
+ rubygems_version: 1.8.9
66
62
  signing_key:
67
63
  specification_version: 3
68
64
  summary: A gem to access San Francisco's Next Muni API easily
@@ -1,20 +0,0 @@
1
- module NextMuni
2
-
3
- class Api
4
- # get stops
5
- # http://webservices.nextbus.com/service/publicXMLFeed?command=routeConfig&a=sf-muni&r=45
6
- # get times
7
- # http://webservices.nextbus.com/service/publicXMLFeed?command=predictions&a=sf-muni&r=<route tag>&d=<direction tag>&s=<stop tag>
8
- # multiples
9
- # http://webservices.nextbus.com/service/publicXMLFeed?command=predictionsForMultiStops&a=sf-muni&stops=45|45_IB2|6787&stops=45|45_IB2|6771
10
- def self.build_url(route_number, stop_id = nil, dir_id = nil)
11
- if stop_id.nil?
12
- url = "http://webservices.nextbus.com/service/publicXMLFeed?command=routeConfig&a=sf-muni&r=#{route_number}"
13
- else
14
- url = "http://webservices.nextbus.com/service/publicXMLFeed?command=predictions&a=sf-muni&r=#{route_number}&s=#{stop_id}"
15
- url += "&d=#{dir_id}" unless dir_id.nil?
16
- end
17
- url
18
- end
19
- end
20
- end