gtfs 0.2.5 → 0.3.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.
- checksums.yaml +5 -5
- data/.travis.yml +13 -4
- data/Gemfile +9 -5
- data/Gemfile.lock +39 -18
- data/LICENSE +21 -0
- data/README.md +3 -17
- data/gtfs.gemspec +2 -1
- data/lib/gtfs/agency.rb +1 -1
- data/lib/gtfs/fare_attribute.rb +2 -2
- data/lib/gtfs/stop_time.rb +1 -1
- data/lib/gtfs/trip.rb +1 -1
- data/lib/gtfs/version.rb +1 -1
- data/spec/fixtures/cassettes/invalid_gtfs_uri.yml +58 -65
- data/spec/fixtures/cassettes/valid_gtfs_uri.yml +55 -122
- data/spec/gtfs/agency_spec.rb +1 -1
- data/spec/gtfs/source_spec.rb +8 -2
- data/spec/gtfs/stop_time_spec.rb +1 -1
- data/spec/gtfs/trip_spec.rb +1 -1
- data/spec/gtfs/url_source_spec.rb +2 -2
- data/spec/spec_helper.rb +7 -3
- metadata +9 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 8df8ca58b1e0d2b4855443d0d7825c59f7eabfaf8be6c89fff0da03cd69ce6b0
|
|
4
|
+
data.tar.gz: e38f08d1959b969400f80353d26ad1ee12965df92fc4c0ebe405ee39d81555ea
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 689c542dead3e918da4d02dd6170ae31a134eeea4dfff6ba7bf1591fd71d297bcbd616b935790823a4247d8421aeb7fc9be9f8618ebd67f6a50388df57c27193
|
|
7
|
+
data.tar.gz: 4b09664e10ccd3c84dbdccbde25b66536395769dc3e789ce371c8f41ad6b77f68a2dbf70466ef88f508e717081eb7bfbf5be197d53a3fb80c6423d70d6495812
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
source 'https://rubygems.org'
|
|
2
2
|
|
|
3
|
-
gem 'rake'
|
|
4
|
-
gem 'rspec'
|
|
5
3
|
gem 'multi_json', '1.0.4'
|
|
6
|
-
gem 'simplecov', :require => false
|
|
7
4
|
gem 'rubyzip', '~> 1.1'
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
|
|
6
|
+
group :test, :development do
|
|
7
|
+
gem 'simplecov', :require => false
|
|
8
|
+
gem 'rake'
|
|
9
|
+
gem 'rspec-its'
|
|
10
|
+
gem 'rspec'
|
|
11
|
+
gem 'vcr'
|
|
12
|
+
gem 'webmock'
|
|
13
|
+
end
|
data/Gemfile.lock
CHANGED
|
@@ -1,33 +1,54 @@
|
|
|
1
1
|
GEM
|
|
2
2
|
remote: https://rubygems.org/
|
|
3
3
|
specs:
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
addressable (2.7.0)
|
|
5
|
+
public_suffix (>= 2.0.2, < 5.0)
|
|
6
|
+
crack (0.4.4)
|
|
7
|
+
diff-lcs (1.4.4)
|
|
8
|
+
docile (1.3.2)
|
|
9
|
+
hashdiff (1.0.1)
|
|
6
10
|
multi_json (1.0.4)
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
rspec-
|
|
11
|
-
rspec-
|
|
12
|
-
|
|
13
|
-
rspec-
|
|
14
|
-
|
|
15
|
-
rspec-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
11
|
+
public_suffix (4.0.6)
|
|
12
|
+
rake (13.0.1)
|
|
13
|
+
rspec (3.9.0)
|
|
14
|
+
rspec-core (~> 3.9.0)
|
|
15
|
+
rspec-expectations (~> 3.9.0)
|
|
16
|
+
rspec-mocks (~> 3.9.0)
|
|
17
|
+
rspec-core (3.9.3)
|
|
18
|
+
rspec-support (~> 3.9.3)
|
|
19
|
+
rspec-expectations (3.9.3)
|
|
20
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
21
|
+
rspec-support (~> 3.9.0)
|
|
22
|
+
rspec-its (1.3.0)
|
|
23
|
+
rspec-core (>= 3.0.0)
|
|
24
|
+
rspec-expectations (>= 3.0.0)
|
|
25
|
+
rspec-mocks (3.9.1)
|
|
26
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
27
|
+
rspec-support (~> 3.9.0)
|
|
28
|
+
rspec-support (3.9.4)
|
|
29
|
+
rubyzip (1.3.0)
|
|
30
|
+
simplecov (0.19.0)
|
|
31
|
+
docile (~> 1.1)
|
|
32
|
+
simplecov-html (~> 0.11)
|
|
33
|
+
simplecov-html (0.12.3)
|
|
34
|
+
vcr (6.0.0)
|
|
35
|
+
webmock (3.9.3)
|
|
36
|
+
addressable (>= 2.3.6)
|
|
37
|
+
crack (>= 0.3.2)
|
|
38
|
+
hashdiff (>= 0.4.0, < 2.0.0)
|
|
22
39
|
|
|
23
40
|
PLATFORMS
|
|
24
41
|
ruby
|
|
25
42
|
|
|
26
43
|
DEPENDENCIES
|
|
27
|
-
fakeweb
|
|
28
44
|
multi_json (= 1.0.4)
|
|
29
45
|
rake
|
|
30
46
|
rspec
|
|
47
|
+
rspec-its
|
|
31
48
|
rubyzip (~> 1.1)
|
|
32
49
|
simplecov
|
|
33
50
|
vcr
|
|
51
|
+
webmock
|
|
52
|
+
|
|
53
|
+
BUNDLED WITH
|
|
54
|
+
2.1.4
|
data/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2012 Ed Schmalzle
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
data/README.md
CHANGED
|
@@ -35,23 +35,9 @@ Alternatively:
|
|
|
35
35
|
...
|
|
36
36
|
source.each_transfer {|transfer| puts transfer}
|
|
37
37
|
|
|
38
|
-
### License
|
|
39
|
-
|
|
40
|
-
Copyright (C) 2012 Ed Schmalzle
|
|
41
38
|
|
|
42
|
-
|
|
43
|
-
copy of this software and associated documentation files (the "Software"), to
|
|
44
|
-
deal in the Software without restriction, including without limitation the
|
|
45
|
-
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
46
|
-
copies of the Software, and to permit persons to whom the Software is furnished
|
|
47
|
-
to do so, subject to the following conditions:
|
|
39
|
+
### License
|
|
48
40
|
|
|
49
|
-
|
|
50
|
-
all copies or substantial portions of the Software.
|
|
41
|
+
This project is licensed under the terms of the MIT license.
|
|
51
42
|
|
|
52
|
-
|
|
53
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
54
|
-
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
55
|
-
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
56
|
-
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
57
|
-
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
43
|
+
See this license at [`LICENSE`](LICENSE).
|
data/gtfs.gemspec
CHANGED
|
@@ -5,7 +5,6 @@ require './lib/gtfs/version'
|
|
|
5
5
|
Gem::Specification.new do |gem|
|
|
6
6
|
gem.name = 'gtfs'
|
|
7
7
|
gem.version = GTFS::VERSION
|
|
8
|
-
gem.date = Date.today.to_s
|
|
9
8
|
|
|
10
9
|
gem.summary = 'Load and read GTFS data from zip bundles'
|
|
11
10
|
gem.description = 'gtfs reads GTFS data from a google-compliant Zip bundle
|
|
@@ -15,6 +14,8 @@ Gem::Specification.new do |gem|
|
|
|
15
14
|
gem.email = ['ed@nerded.net']
|
|
16
15
|
gem.homepage = 'https://github.com/nerdEd/gtfs'
|
|
17
16
|
|
|
17
|
+
gem.license = 'MIT'
|
|
18
|
+
|
|
18
19
|
gem.required_ruby_version = '>= 1.9.2'
|
|
19
20
|
|
|
20
21
|
gem.add_dependency 'rake'
|
data/lib/gtfs/agency.rb
CHANGED
data/lib/gtfs/fare_attribute.rb
CHANGED
|
@@ -2,8 +2,8 @@ module GTFS
|
|
|
2
2
|
class FareAttribute
|
|
3
3
|
include GTFS::Model
|
|
4
4
|
|
|
5
|
-
has_required_attrs :fare_id, :price, :currency_type, :payment_method
|
|
6
|
-
has_optional_attrs :transfer_duration
|
|
5
|
+
has_required_attrs :fare_id, :price, :currency_type, :payment_method, :transfers
|
|
6
|
+
has_optional_attrs :transfer_duration
|
|
7
7
|
attr_accessor *attrs
|
|
8
8
|
|
|
9
9
|
collection_name :fare_attributes
|
data/lib/gtfs/stop_time.rb
CHANGED
|
@@ -3,7 +3,7 @@ module GTFS
|
|
|
3
3
|
include GTFS::Model
|
|
4
4
|
|
|
5
5
|
has_required_attrs :trip_id, :arrival_time, :departure_time, :stop_id, :stop_sequence
|
|
6
|
-
has_optional_attrs :stop_headsign, :pickup_type, :drop_off_type, :shape_dist_traveled
|
|
6
|
+
has_optional_attrs :stop_headsign, :pickup_type, :drop_off_type, :shape_dist_traveled, :timepoint
|
|
7
7
|
attr_accessor *attrs
|
|
8
8
|
|
|
9
9
|
collection_name :stop_times
|
data/lib/gtfs/trip.rb
CHANGED
|
@@ -3,7 +3,7 @@ module GTFS
|
|
|
3
3
|
include GTFS::Model
|
|
4
4
|
|
|
5
5
|
has_required_attrs :route_id, :service_id, :id
|
|
6
|
-
has_optional_attrs :headsign, :short_name, :direction_id, :block_id, :shape_id, :wheelchair_accessible
|
|
6
|
+
has_optional_attrs :headsign, :short_name, :direction_id, :block_id, :shape_id, :wheelchair_accessible, :bikes_allowed
|
|
7
7
|
attr_accessor *attrs
|
|
8
8
|
|
|
9
9
|
column_prefix :trip_
|
data/lib/gtfs/version.rb
CHANGED
|
@@ -1,70 +1,63 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
method:
|
|
5
|
-
uri:
|
|
6
|
-
body:
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
http_interactions:
|
|
3
|
+
- request:
|
|
4
|
+
method: get
|
|
5
|
+
uri: https://example.org/gtfs.zip
|
|
6
|
+
body:
|
|
7
|
+
encoding: US-ASCII
|
|
8
|
+
string: ''
|
|
9
|
+
headers:
|
|
10
|
+
Accept-Encoding:
|
|
11
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
|
12
|
+
Accept:
|
|
13
|
+
- "*/*"
|
|
14
|
+
User-Agent:
|
|
15
|
+
- Ruby
|
|
16
|
+
Host:
|
|
17
|
+
- example.org
|
|
18
|
+
response:
|
|
19
|
+
status:
|
|
10
20
|
code: 404
|
|
11
21
|
message: Not Found
|
|
12
22
|
headers:
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
- Cookie,Accept-Encoding
|
|
19
|
-
x-pingback:
|
|
20
|
-
- http://www.edschmalzle.com/xmlrpc.php
|
|
21
|
-
expires:
|
|
22
|
-
- Wed, 11 Jan 1984 05:00:00 GMT
|
|
23
|
-
cache-control:
|
|
24
|
-
- no-cache, must-revalidate, max-age=0
|
|
25
|
-
pragma:
|
|
26
|
-
- no-cache
|
|
27
|
-
last-modified:
|
|
28
|
-
- Wed, 18 Jan 2012 05:04:54 GMT
|
|
29
|
-
transfer-encoding:
|
|
30
|
-
- chunked
|
|
31
|
-
content-type:
|
|
23
|
+
Age:
|
|
24
|
+
- '164717'
|
|
25
|
+
Cache-Control:
|
|
26
|
+
- max-age=604800
|
|
27
|
+
Content-Type:
|
|
32
28
|
- text/html; charset=UTF-8
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
Schmalzle\t\t\tAll rights reserved. Design by <a href=\"http://www.freewpthemes.net/\">Free
|
|
69
|
-
WordPress Themes</a> • \r\n\t\t\tPowered by <a href=\"http://wordpress.org/\">WordPress</a></p>\r\n\t</div>\r\n</div>\r\n</body></html>"
|
|
70
|
-
http_version: '1.1'
|
|
29
|
+
Date:
|
|
30
|
+
- Fri, 23 Oct 2020 23:02:49 GMT
|
|
31
|
+
Expires:
|
|
32
|
+
- Fri, 30 Oct 2020 23:02:49 GMT
|
|
33
|
+
Last-Modified:
|
|
34
|
+
- Thu, 22 Oct 2020 01:17:32 GMT
|
|
35
|
+
Server:
|
|
36
|
+
- ECS (oxr/837A)
|
|
37
|
+
Vary:
|
|
38
|
+
- Accept-Encoding
|
|
39
|
+
X-Cache:
|
|
40
|
+
- 404-HIT
|
|
41
|
+
Content-Length:
|
|
42
|
+
- '648'
|
|
43
|
+
body:
|
|
44
|
+
encoding: ASCII-8BIT
|
|
45
|
+
string: "<!doctype html>\n<html>\n<head>\n <title>Example Domain</title>\n\n
|
|
46
|
+
\ <meta charset=\"utf-8\" />\n <meta http-equiv=\"Content-type\" content=\"text/html;
|
|
47
|
+
charset=utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width,
|
|
48
|
+
initial-scale=1\" />\n <style type=\"text/css\">\n body {\n background-color:
|
|
49
|
+
#f0f0f2;\n margin: 0;\n padding: 0;\n font-family: -apple-system,
|
|
50
|
+
system-ui, BlinkMacSystemFont, \"Segoe UI\", \"Open Sans\", \"Helvetica Neue\",
|
|
51
|
+
Helvetica, Arial, sans-serif;\n \n }\n div {\n width:
|
|
52
|
+
600px;\n margin: 5em auto;\n padding: 2em;\n background-color:
|
|
53
|
+
#fdfdff;\n border-radius: 0.5em;\n box-shadow: 2px 3px 7px 2px
|
|
54
|
+
rgba(0,0,0,0.02);\n }\n a:link, a:visited {\n color: #38488f;\n
|
|
55
|
+
\ text-decoration: none;\n }\n @media (max-width: 700px) {\n div
|
|
56
|
+
{\n margin: 0 auto;\n width: auto;\n }\n }\n
|
|
57
|
+
\ </style> \n</head>\n\n<body>\n<div>\n <h1>Example Domain</h1>\n
|
|
58
|
+
\ <p>This domain is for use in illustrative examples in documents. You may
|
|
59
|
+
use this\n domain in literature without prior coordination or asking for
|
|
60
|
+
permission.</p>\n <p><a href=\"https://www.iana.org/domains/example\">More
|
|
61
|
+
information...</a></p>\n</div>\n</body>\n</html>\n"
|
|
62
|
+
recorded_at: Fri, 23 Oct 2020 23:02:49 GMT
|
|
63
|
+
recorded_with: VCR 6.0.0
|
|
@@ -1,127 +1,60 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
method:
|
|
5
|
-
uri:
|
|
6
|
-
body:
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
http_interactions:
|
|
3
|
+
- request:
|
|
4
|
+
method: get
|
|
5
|
+
uri: https://developers.google.com/transit/gtfs/examples/sample-feed.zip
|
|
6
|
+
body:
|
|
7
|
+
encoding: US-ASCII
|
|
8
|
+
string: ''
|
|
9
|
+
headers:
|
|
10
|
+
Accept-Encoding:
|
|
11
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
|
12
|
+
Accept:
|
|
13
|
+
- "*/*"
|
|
14
|
+
User-Agent:
|
|
15
|
+
- Ruby
|
|
16
|
+
Host:
|
|
17
|
+
- developers.google.com
|
|
18
|
+
response:
|
|
19
|
+
status:
|
|
10
20
|
code: 200
|
|
11
21
|
message: OK
|
|
12
22
|
headers:
|
|
13
|
-
|
|
14
|
-
- nginx/1.0.14
|
|
15
|
-
date:
|
|
16
|
-
- Fri, 13 Apr 2012 21:52:30 GMT
|
|
17
|
-
content-type:
|
|
23
|
+
Content-Type:
|
|
18
24
|
- application/zip
|
|
19
|
-
|
|
20
|
-
-
|
|
21
|
-
|
|
22
|
-
-
|
|
23
|
-
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
-
|
|
29
|
-
|
|
30
|
-
-
|
|
31
|
-
|
|
32
|
-
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
4sqyrdRdAvCRiVc+QgNvOo1GLLYL0JGBRyN7p8znzwMFntMMde/K+nS//Ewi
|
|
79
|
-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
-
PFnWH8M+Q3qWSM8QjPY6pawqI7POSUb3UWYU7syuulO3IB1upHQ02A7lMVTn
|
|
81
|
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
gevNa1G266bt1k5PCPZDz8PTVTq50xk6QzOtVLaY6ySboafLBr1vB1Heq58b
|
|
100
|
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
ZGF0ZXMudHh0VVQFAAO6+x5PdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAAAAgA
|
|
117
|
-
bXYmQIefakeRBgAAkBMAAAoAGAAAAAAAAQAAAKSB7wEAAHJvdXRlcy50eHRV
|
|
118
|
-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
-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
-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
-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
-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
-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
-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
-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
|
|
126
|
-
AJENAAAAAA==
|
|
127
|
-
http_version: '1.1'
|
|
25
|
+
Last-Modified:
|
|
26
|
+
- Wed, 11 Jan 2012 14:31:33 GMT
|
|
27
|
+
Content-Disposition:
|
|
28
|
+
- attachment; filename="sample-feed.zip"
|
|
29
|
+
Cache-Control:
|
|
30
|
+
- no-cache, must-revalidate
|
|
31
|
+
Expires:
|
|
32
|
+
- '0'
|
|
33
|
+
Pragma:
|
|
34
|
+
- no-cache
|
|
35
|
+
Strict-Transport-Security:
|
|
36
|
+
- max-age=31536000; includeSubdomains
|
|
37
|
+
X-Frame-Options:
|
|
38
|
+
- SAMEORIGIN
|
|
39
|
+
X-Xss-Protection:
|
|
40
|
+
- '0'
|
|
41
|
+
X-Content-Type-Options:
|
|
42
|
+
- nosniff
|
|
43
|
+
X-Cloud-Trace-Context:
|
|
44
|
+
- 9d9cd729a1af3deba482f46f3a68c263
|
|
45
|
+
Date:
|
|
46
|
+
- Fri, 23 Oct 2020 23:02:49 GMT
|
|
47
|
+
Server:
|
|
48
|
+
- Google Frontend
|
|
49
|
+
Content-Length:
|
|
50
|
+
- '3217'
|
|
51
|
+
Alt-Svc:
|
|
52
|
+
- h3-Q050=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-T050=":443";
|
|
53
|
+
ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443";
|
|
54
|
+
ma=2592000; v="46,43"
|
|
55
|
+
body:
|
|
56
|
+
encoding: ASCII-8BIT
|
|
57
|
+
string: !binary |-
|
|
58
|
+
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
|
|
59
|
+
recorded_at: Fri, 23 Oct 2020 23:02:49 GMT
|
|
60
|
+
recorded_with: VCR 6.0.0
|
data/spec/gtfs/agency_spec.rb
CHANGED
|
@@ -2,7 +2,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
|
2
2
|
|
|
3
3
|
describe GTFS::Agency do
|
|
4
4
|
describe 'Agency.parse_agencies' do
|
|
5
|
-
let(:header_line) {"agency_id,agency_name,agency_url,agency_timezone,agency_lang,agency_phone\n"}
|
|
5
|
+
let(:header_line) {"agency_id,agency_name,agency_url,agency_timezone,agency_lang,agency_phone,agency_email\n"}
|
|
6
6
|
let(:invalid_header_line) {"agency_id,agency_url,agency_timezone,agency_lang,agency_phone\n"}
|
|
7
7
|
let(:valid_line) {"1,Maryland Transit Administration,http://www.mta.maryland.gov,America/New_York,en,410-539-5000\n"}
|
|
8
8
|
let(:invalid_line) {"1,,http://www.mta.maryland.gov,America/New_York,en,410-539-5000\n"}
|
data/spec/gtfs/source_spec.rb
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
2
2
|
|
|
3
3
|
describe GTFS::Source do
|
|
4
|
+
before(:each) do
|
|
5
|
+
VCR.insert_cassette 'valid_gtfs_uri'
|
|
6
|
+
end
|
|
7
|
+
after(:each) do
|
|
8
|
+
VCR.eject_cassette
|
|
9
|
+
end
|
|
10
|
+
|
|
4
11
|
let(:valid_local_source) do
|
|
5
12
|
File.expand_path(File.dirname(__FILE__) + '/../fixtures/valid_gtfs.zip')
|
|
6
13
|
end
|
|
@@ -15,8 +22,7 @@ describe GTFS::Source do
|
|
|
15
22
|
subject {GTFS::Source.build(data_source, opts)}
|
|
16
23
|
|
|
17
24
|
context 'with a url as a data root' do
|
|
18
|
-
|
|
19
|
-
let(:data_source) {'http://dl.dropbox.com/u/416235/work/valid_gtfs.zip'}
|
|
25
|
+
let(:data_source) {'https://developers.google.com/transit/gtfs/examples/sample-feed.zip'}
|
|
20
26
|
|
|
21
27
|
it {should be_instance_of GTFS::URLSource}
|
|
22
28
|
its(:options) {should == GTFS::Source::DEFAULT_OPTIONS}
|
data/spec/gtfs/stop_time_spec.rb
CHANGED
|
@@ -2,7 +2,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
|
2
2
|
|
|
3
3
|
describe GTFS::StopTime do
|
|
4
4
|
describe 'StopTime.parse_stop_times' do
|
|
5
|
-
let(:header_line) {"trip_id,arrival_time,departure_time,stop_id,stop_sequence,stop_headsign,pickup_type,drop_off_type,shape_dist_traveled\n"}
|
|
5
|
+
let(:header_line) {"trip_id,arrival_time,departure_time,stop_id,stop_sequence,stop_headsign,pickup_type,drop_off_type,shape_dist_traveled,timepoint\n"}
|
|
6
6
|
let(:invalid_header_line) {",arrival_time,,stop_id,,stop_headsign,,drop_off_type,\n"}
|
|
7
7
|
let(:valid_line) {"982385,4:34:00,4:34:00,277,1,,0,0,\n"}
|
|
8
8
|
let(:invalid_line) {",,4:34:00,,1,,,0,\n"}
|
data/spec/gtfs/trip_spec.rb
CHANGED
|
@@ -2,7 +2,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
|
2
2
|
|
|
3
3
|
describe GTFS::Trip do
|
|
4
4
|
describe 'Trip.parse_trips' do
|
|
5
|
-
let(:header_line) {"route_id,service_id,trip_id,trip_headsign,direction_id,block_id,shape_id\n"}
|
|
5
|
+
let(:header_line) {"route_id,service_id,trip_id,trip_headsign,direction_id,block_id,shape_id,bikes_allowed\n"}
|
|
6
6
|
let(:invalid_header_line) {",,,,direction_id,block_id,shape_id\n"}
|
|
7
7
|
let(:valid_line) {"4679,1,982394,1 FT McHENRY,0,189021,59135\n"}
|
|
8
8
|
let(:invalid_line) {",1,,1 FT McHENRY,,189021,\n"}
|
|
@@ -2,7 +2,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
|
2
2
|
|
|
3
3
|
describe GTFS::URLSource do
|
|
4
4
|
context 'with a URI to a valid source zip' do
|
|
5
|
-
let(:source_path) {'
|
|
5
|
+
let(:source_path) {'https://developers.google.com/transit/gtfs/examples/sample-feed.zip'}
|
|
6
6
|
it 'should create a new source successfully' do
|
|
7
7
|
VCR.use_cassette('valid_gtfs_uri') do
|
|
8
8
|
lambda {GTFS::URLSource.new(source_path, {})}.should_not raise_error(GTFS::InvalidSourceException)
|
|
@@ -11,7 +11,7 @@ describe GTFS::URLSource do
|
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
context 'with a non-existent URI' do
|
|
14
|
-
let(:source_path) {'
|
|
14
|
+
let(:source_path) {'https://example.org/gtfs.zip'}
|
|
15
15
|
it 'should raise an exception' do
|
|
16
16
|
VCR.use_cassette('invalid_gtfs_uri') do
|
|
17
17
|
lambda {GTFS::URLSource.new(source_path, {})}.should raise_error(GTFS::InvalidSourceException)
|
data/spec/spec_helper.rb
CHANGED
|
@@ -6,16 +6,20 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
|
6
6
|
|
|
7
7
|
require 'bundler/setup'
|
|
8
8
|
require 'rspec'
|
|
9
|
+
require 'rspec/its'
|
|
9
10
|
require 'vcr'
|
|
10
11
|
require 'gtfs'
|
|
11
12
|
|
|
12
13
|
require File.expand_path(File.dirname(__FILE__) + '/support/model_shared_examples')
|
|
13
14
|
|
|
14
15
|
RSpec.configure do |config|
|
|
15
|
-
config.
|
|
16
|
+
config.expect_with :rspec do |expectations|
|
|
17
|
+
expectations.syntax = [:should , :expect]
|
|
18
|
+
expectations.on_potential_false_positives = :nothing
|
|
19
|
+
end
|
|
16
20
|
end
|
|
17
21
|
|
|
18
|
-
VCR.
|
|
22
|
+
VCR.configure do |c|
|
|
19
23
|
c.cassette_library_dir = File.join(File.dirname(__FILE__), '/fixtures/cassettes')
|
|
20
|
-
c.
|
|
24
|
+
c.hook_into :webmock
|
|
21
25
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gtfs
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- nerdEd
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-02-19 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|
|
@@ -134,6 +134,7 @@ files:
|
|
|
134
134
|
- ".travis.yml"
|
|
135
135
|
- Gemfile
|
|
136
136
|
- Gemfile.lock
|
|
137
|
+
- LICENSE
|
|
137
138
|
- README.md
|
|
138
139
|
- Rakefile
|
|
139
140
|
- gtfs.gemspec
|
|
@@ -180,9 +181,10 @@ files:
|
|
|
180
181
|
- spec/spec_helper.rb
|
|
181
182
|
- spec/support/model_shared_examples.rb
|
|
182
183
|
homepage: https://github.com/nerdEd/gtfs
|
|
183
|
-
licenses:
|
|
184
|
+
licenses:
|
|
185
|
+
- MIT
|
|
184
186
|
metadata: {}
|
|
185
|
-
post_install_message:
|
|
187
|
+
post_install_message:
|
|
186
188
|
rdoc_options: []
|
|
187
189
|
require_paths:
|
|
188
190
|
- lib
|
|
@@ -197,9 +199,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
197
199
|
- !ruby/object:Gem::Version
|
|
198
200
|
version: '0'
|
|
199
201
|
requirements: []
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
signing_key:
|
|
202
|
+
rubygems_version: 3.1.2
|
|
203
|
+
signing_key:
|
|
203
204
|
specification_version: 4
|
|
204
205
|
summary: Load and read GTFS data from zip bundles
|
|
205
206
|
test_files:
|
|
@@ -225,4 +226,3 @@ test_files:
|
|
|
225
226
|
- spec/gtfs/url_source_spec.rb
|
|
226
227
|
- spec/spec_helper.rb
|
|
227
228
|
- spec/support/model_shared_examples.rb
|
|
228
|
-
has_rdoc:
|