class SpBus::Scrapers::RouteDetails
Constants
- URL
Public Class Methods
new(route)
click to toggle source
# File lib/spbus/scrapers/route_details.rb, line 6 def initialize(route) @route = route end
Public Instance Methods
fetch()
click to toggle source
# File lib/spbus/scrapers/route_details.rb, line 10 def fetch doc = SpBus::Request.new(url_with_params).get @json = JSON.parse(doc, symbolize_names: true) validate_response build_route true rescue OpenURI::HTTPError => e if e.io && e.io.status.first.to_i == 500 raise SpBus::InvalidRoute else raise e end end
Private Instance Methods
build_route()
click to toggle source
# File lib/spbus/scrapers/route_details.rb, line 42 def build_route origin = find_origin destination = find_destination @route.origin = origin[:DenominacaoTSTP] @route.origin_id = origin[:CodigoLinha] unless @route.one_way? @route.destination = destination[:DenominacaoTPTS] @route.destination_id = destination[:CodigoLinha] end
find_destination()
click to toggle source
# File lib/spbus/scrapers/route_details.rb, line 57 def find_destination @json.select { |h| h[:Sentido] == 1 }.first end
find_origin()
click to toggle source
# File lib/spbus/scrapers/route_details.rb, line 53 def find_origin @json.select { |h| h[:Sentido] == 2 }.first end
url_with_params()
click to toggle source
# File lib/spbus/scrapers/route_details.rb, line 28 def url_with_params params = URI.encode_www_form(termosBusca: @route.number) "#{URL}?#{params}" end
validate_response()
click to toggle source
# File lib/spbus/scrapers/route_details.rb, line 33 def validate_response if @json.nil? || @json.size != 2 || @json[0][:DenominacaoTSTP] != @json[1][:DenominacaoTSTP] || @json[0][:DenominacaoTPTS] != @json[1][:DenominacaoTPTS] raise SpBus::UnknownResponse end end