spbus 0.0.3 → 0.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a2ca7dae44b502aa40c4e71c960147be430435d7
4
- data.tar.gz: 643b83405b7deb7231f966b01853818c3239c222
3
+ metadata.gz: 223522ae47c316b251c39002868035c5a10f0894
4
+ data.tar.gz: 8316188c0e34cbe96f2f276ee1d3b13648527180
5
5
  SHA512:
6
- metadata.gz: f3553382bfaaf6635602253c3ae313adaab8bd32819e4ea89dbfa94f7b95396f61e13a94064f1c877f75617a26666b2da8dc872630577799d6a3d351944a1d79
7
- data.tar.gz: 042caf114ba9b096d978c29989ffac2f7907e16ba888535828892c40a8da170952a20b040cc450e343a3537b2ce3767a63955d40b81f7e3bdfae876f18fb2b52
6
+ metadata.gz: 1805270572c03a5ad144939f34bb61eb015aaafd6682161a126f22715bf55a509ac49e15b041f7686d78d24a84c89d8d6dd9d67d613295ef1d2da3fb5fed156a
7
+ data.tar.gz: dbf6f8f066d15f7166cd231b3253c2564631e8a4a1e9423be8c6c2a024cc9e37fb44c15510411a26214c3003570c806436d5264caf91459b48a94b6a6af2237f
data/lib/spbus/route.rb CHANGED
@@ -11,10 +11,6 @@ module SpBus
11
11
  def one_way?
12
12
  !!@one_way
13
13
  end
14
-
15
- def fetch_details
16
- Scrapers::RouteDetails.new(self).fetch
17
- end
18
14
  end
19
15
  end
20
16
 
@@ -15,6 +15,12 @@ module SpBus::Scrapers
15
15
  build_route
16
16
 
17
17
  true
18
+ rescue OpenURI::HTTPError => e
19
+ if e.io && e.io.status.first.to_i == 500
20
+ raise SpBus::InvalidRoute
21
+ else
22
+ raise e
23
+ end
18
24
  end
19
25
 
20
26
  private
data/lib/spbus/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module SpBus
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/lib/spbus.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require "nokogiri"
2
2
  require "open-uri"
3
3
  require "json"
4
+ require "logger"
4
5
 
5
6
  require "spbus/route"
6
7
  require "spbus/bus"
@@ -14,18 +15,38 @@ require "spbus/version"
14
15
  module SpBus
15
16
 
16
17
  class UnknownResponse < StandardError ; end
18
+ class InvalidRoute < StandardError ; end
17
19
 
18
- def self.fetch_routes
19
- scraper = Scrapers::Routes.new
20
- scraper.fetch
21
- scraper.routes.each(&:fetch_details)
22
- scraper.routes
23
- end
20
+ class << self
21
+
22
+ attr_writer :logger
23
+
24
+ def logger
25
+ @logger ||= Logger.new(STDOUT)
26
+ end
27
+
28
+ def fetch_routes
29
+ scraper = Scrapers::Routes.new
30
+ scraper.fetch
31
+
32
+ scraper.routes.select do |route|
33
+ logger.info "Fetching details for route #{route.number}..."
34
+
35
+ begin
36
+ Scrapers::RouteDetails.new(route).fetch
37
+ true
38
+ rescue InvalidRoute
39
+ logger.warn "[INVALID ROUTE] #{route.number}"
40
+ false
41
+ end
42
+ end
43
+ end
24
44
 
25
- def self.fetch_buses(destination_id)
26
- scraper = Scrapers::Locations.new(destination_id)
27
- scraper.fetch
28
- scraper.buses
45
+ def fetch_buses(destination_id)
46
+ scraper = Scrapers::Locations.new(destination_id)
47
+ scraper.fetch
48
+ scraper.buses
49
+ end
29
50
  end
30
51
  end
31
52
 
@@ -13,7 +13,7 @@ describe SpBus::Scrapers::RouteDetails do
13
13
  it "raises an error" do
14
14
  expect {
15
15
  subject.fetch
16
- }.to raise_error
16
+ }.to raise_error(SpBus::InvalidRoute)
17
17
  end
18
18
  end
19
19
 
data/spec/spbus_spec.rb CHANGED
@@ -10,17 +10,33 @@ describe SpBus do
10
10
  let(:route2) { SpBus::Route.new("6450-10") }
11
11
  let(:scraper) { double.as_null_object }
12
12
 
13
- it "fetch route details for every route" do
13
+ before do
14
14
  allow_any_instance_of(SpBus::Scrapers::Routes).to receive(:fetch)
15
- allow_any_instance_of(SpBus::Scrapers::Routes).to receive(:routes).and_return([route1, route2])
15
+ allow_any_instance_of(SpBus::Scrapers::Routes).to receive(:routes)
16
+ .and_return([route1, route2])
17
+ end
18
+
19
+ it "fetch route details for every route" do
20
+ expect(SpBus::Scrapers::RouteDetails).to receive(:new).with(route1)
21
+ .and_return(scraper)
16
22
 
17
- expect(SpBus::Scrapers::RouteDetails).to receive(:new).with(route1).and_return(scraper)
18
- expect(SpBus::Scrapers::RouteDetails).to receive(:new).with(route2).and_return(scraper)
23
+ expect(SpBus::Scrapers::RouteDetails).to receive(:new).with(route2)
24
+ .and_return(scraper)
19
25
 
20
26
  expect(scraper).to receive(:fetch).twice
21
27
 
22
28
  expect(subject.fetch_routes).to eql([route1, route2])
23
29
  end
30
+
31
+ it "does not return an invalid route" do
32
+ allow(SpBus::Scrapers::RouteDetails).to receive(:new)
33
+ .with(anything).and_return(scraper)
34
+
35
+ expect(scraper).to receive(:fetch).ordered.and_raise(SpBus::InvalidRoute)
36
+ expect(scraper).to receive(:fetch).ordered
37
+
38
+ expect(subject.fetch_routes).to eql([route2])
39
+ end
24
40
  end
25
41
 
26
42
  describe ".fetch_buses" do
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  require "spbus"
2
2
  require "vcr"
3
3
 
4
+ SpBus.logger = Logger.new("/dev/null")
5
+
4
6
  VCR.configure do |c|
5
7
  c.cassette_library_dir = "spec/cassettes"
6
8
  c.hook_into :webmock
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spbus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lenon Marcel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-26 00:00:00.000000000 Z
11
+ date: 2013-10-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -167,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
167
  version: '0'
168
168
  requirements: []
169
169
  rubyforge_project:
170
- rubygems_version: 2.0.6
170
+ rubygems_version: 2.0.3
171
171
  signing_key:
172
172
  specification_version: 4
173
173
  summary: A gem to easily retrieve information about São Paulo bus routes, numbers,