spbus 0.0.2 → 0.0.3
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 +4 -4
- data/example.rb +14 -18
- data/lib/spbus/bus.rb +2 -3
- data/lib/spbus/request.rb +31 -0
- data/lib/spbus/route.rb +6 -40
- data/lib/spbus/scrapers/locations.rb +48 -0
- data/lib/spbus/scrapers/route_details.rb +56 -0
- data/lib/spbus/scrapers/routes.rb +74 -0
- data/lib/spbus/version.rb +1 -1
- data/lib/spbus.rb +23 -5
- data/spbus.gemspec +1 -1
- data/spec/bus_spec.rb +12 -0
- data/spec/cassettes/auth_request.yml +278 -0
- data/spec/cassettes/{SpBus_Crawler/_fetch_routes/returns_all_bus_routes.yml → bus_routes.yml} +26269 -26401
- data/spec/cassettes/buses_locations.yml +276 -0
- data/spec/cassettes/invalid_route_detail.yml +276 -0
- data/spec/cassettes/normal_request.yml +136 -0
- data/spec/cassettes/normal_route_detail.yml +278 -0
- data/spec/cassettes/one_way_route_detail.yml +278 -0
- data/spec/request_spec.rb +39 -0
- data/spec/route_spec.rb +23 -32
- data/spec/scrapers/locations_scraper_spec.rb +24 -0
- data/spec/scrapers/route_details_scraper_spec.rb +68 -0
- data/spec/scrapers/routes_scraper_spec.rb +30 -0
- data/spec/spbus_spec.rb +40 -0
- data/spec/spec_helper.rb +1 -1
- metadata +35 -25
- data/lib/spbus/crawler.rb +0 -52
- data/lib/spbus/locations.rb +0 -37
- data/spec/cassettes/SpBus_Crawler/_fetch_routes/returns_creates_a_Route_object_for_every_found_route.yml +0 -32809
- data/spec/cassettes/SpBus_Locations/_fetch_locations/retrieves_all_buses_locations.yml +0 -34
- data/spec/cassettes/SpBus_Route/_fetch_details/sets_destination_attribute.yml +0 -36
- data/spec/cassettes/SpBus_Route/_fetch_details/sets_origin_attribute.yml +0 -36
- data/spec/cassettes/SpBus_Route/_fetch_details/sets_route_position_codes.yml +0 -36
- data/spec/cassettes/SpBus_Route/_to_h/returns_a_hash.yml +0 -36
- data/spec/crawler_spec.rb +0 -20
- data/spec/locations_spec.rb +0 -18
data/lib/spbus/crawler.rb
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module SpBus
|
4
|
-
class Crawler
|
5
|
-
|
6
|
-
BUS_ROUTES_URL = "http://200.99.150.170/PlanOperWeb/linhaselecionada.asp"
|
7
|
-
RESPONSE_VALIDATOR = /Foram encontrados vários resultados para a sua busca/
|
8
|
-
ROUTE_NUMBER_MATCHER = /Linha: (?<number>[a-z0-9]+[-][0-9a-z]+)/iu
|
9
|
-
ROUTE_NUMBER_PATH = "#contentScroll ul li .linkLinha:first-child"
|
10
|
-
|
11
|
-
attr_reader :routes
|
12
|
-
|
13
|
-
def initialize
|
14
|
-
@routes = []
|
15
|
-
end
|
16
|
-
|
17
|
-
def fetch_routes
|
18
|
-
sptrans_request
|
19
|
-
|
20
|
-
raise InconsistentResponse unless valid_response?
|
21
|
-
|
22
|
-
@response.css(ROUTE_NUMBER_PATH).each do |el|
|
23
|
-
create_route_from_raw(el.content)
|
24
|
-
end
|
25
|
-
|
26
|
-
true
|
27
|
-
end
|
28
|
-
|
29
|
-
private
|
30
|
-
|
31
|
-
def sptrans_request
|
32
|
-
@response = Nokogiri::HTML(RestClient.get(BUS_ROUTES_URL))
|
33
|
-
end
|
34
|
-
|
35
|
-
def valid_response?
|
36
|
-
@response.text =~ RESPONSE_VALIDATOR
|
37
|
-
end
|
38
|
-
|
39
|
-
def clean_raw_route(raw)
|
40
|
-
raw.strip.gsub("\u00A0", " ")
|
41
|
-
end
|
42
|
-
|
43
|
-
def create_route_from_raw(str)
|
44
|
-
match = ROUTE_NUMBER_MATCHER.match(clean_raw_route(str))
|
45
|
-
|
46
|
-
if match
|
47
|
-
@routes << Route.new(match[:number])
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
data/lib/spbus/locations.rb
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
module SpBus
|
2
|
-
class Locations
|
3
|
-
BUSES_LOCATIONS = "http://200.189.189.54/InternetServices/PosicaoLinha"
|
4
|
-
|
5
|
-
attr_reader :buses
|
6
|
-
|
7
|
-
def initialize(route)
|
8
|
-
@route = route
|
9
|
-
end
|
10
|
-
|
11
|
-
def fetch_locations
|
12
|
-
sptrans_request
|
13
|
-
|
14
|
-
raise InconsistentResponse unless valid_response?
|
15
|
-
|
16
|
-
@buses = @response[:vs].collect do |hash|
|
17
|
-
SpBus::Bus.new(lat: hash[:py], long: hash[:px])
|
18
|
-
end
|
19
|
-
|
20
|
-
true
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
def sptrans_request
|
26
|
-
@response = JSON.parse(
|
27
|
-
RestClient.get(BUSES_LOCATIONS, params: { codigoLinha: @route }),
|
28
|
-
symbolize_names: true
|
29
|
-
)[:PosicaoLinhaResult]
|
30
|
-
end
|
31
|
-
|
32
|
-
def valid_response?
|
33
|
-
!@response.nil? && !@response[:hr].nil? && !@response[:hr].empty?
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|