spbus 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/example.rb +14 -18
  3. data/lib/spbus/bus.rb +2 -3
  4. data/lib/spbus/request.rb +31 -0
  5. data/lib/spbus/route.rb +6 -40
  6. data/lib/spbus/scrapers/locations.rb +48 -0
  7. data/lib/spbus/scrapers/route_details.rb +56 -0
  8. data/lib/spbus/scrapers/routes.rb +74 -0
  9. data/lib/spbus/version.rb +1 -1
  10. data/lib/spbus.rb +23 -5
  11. data/spbus.gemspec +1 -1
  12. data/spec/bus_spec.rb +12 -0
  13. data/spec/cassettes/auth_request.yml +278 -0
  14. data/spec/cassettes/{SpBus_Crawler/_fetch_routes/returns_all_bus_routes.yml → bus_routes.yml} +26269 -26401
  15. data/spec/cassettes/buses_locations.yml +276 -0
  16. data/spec/cassettes/invalid_route_detail.yml +276 -0
  17. data/spec/cassettes/normal_request.yml +136 -0
  18. data/spec/cassettes/normal_route_detail.yml +278 -0
  19. data/spec/cassettes/one_way_route_detail.yml +278 -0
  20. data/spec/request_spec.rb +39 -0
  21. data/spec/route_spec.rb +23 -32
  22. data/spec/scrapers/locations_scraper_spec.rb +24 -0
  23. data/spec/scrapers/route_details_scraper_spec.rb +68 -0
  24. data/spec/scrapers/routes_scraper_spec.rb +30 -0
  25. data/spec/spbus_spec.rb +40 -0
  26. data/spec/spec_helper.rb +1 -1
  27. metadata +35 -25
  28. data/lib/spbus/crawler.rb +0 -52
  29. data/lib/spbus/locations.rb +0 -37
  30. data/spec/cassettes/SpBus_Crawler/_fetch_routes/returns_creates_a_Route_object_for_every_found_route.yml +0 -32809
  31. data/spec/cassettes/SpBus_Locations/_fetch_locations/retrieves_all_buses_locations.yml +0 -34
  32. data/spec/cassettes/SpBus_Route/_fetch_details/sets_destination_attribute.yml +0 -36
  33. data/spec/cassettes/SpBus_Route/_fetch_details/sets_origin_attribute.yml +0 -36
  34. data/spec/cassettes/SpBus_Route/_fetch_details/sets_route_position_codes.yml +0 -36
  35. data/spec/cassettes/SpBus_Route/_to_h/returns_a_hash.yml +0 -36
  36. data/spec/crawler_spec.rb +0 -20
  37. 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
-
@@ -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
-