class Onebusaway
Attributes
api_base[R]
Public Class Methods
new(api_key)
click to toggle source
# File lib/onebusaway_updated.rb, line 8 def initialize api_key @api_key = api_key @api_base = URI 'http://api.onebusaway.org/api/where/' end
Public Instance Methods
api_base=(url)
click to toggle source
# File lib/onebusaway_updated.rb, line 17 def api_base= url @api_base = URI url end
arrivals_and_departures_for_stop(agency_id, stop_id)
click to toggle source
# File lib/onebusaway_updated.rb, line 57 def arrivals_and_departures_for_stop agency_id, stop_id result = request 'arrivals-and-departures-for-stop', id: make_id(agency_id, stop_id) result['arrivalsAndDepartures'].map do |arr_dep| ArrivalAndDeparture.new arr_dep end end
make_id(agency_id, sub_id)
click to toggle source
# File lib/onebusaway_updated.rb, line 13 def make_id agency_id, sub_id "#{agency_id}_#{sub_id}" end
route_by_id(agency_id, route_id)
click to toggle source
# File lib/onebusaway_updated.rb, line 27 def route_by_id agency_id, route_id result = request 'route', id: make_id(agency_id, route_id) Route.new result end
routes_for_location(lat, lon)
click to toggle source
# File lib/onebusaway_updated.rb, line 41 def routes_for_location lat, lon result = request 'routes-for-location', lat: lat, lon: lon result['routes'].map do |route| Route.new route end end
stop_by_id(agency_id, stop_id)
click to toggle source
# File lib/onebusaway_updated.rb, line 21 def stop_by_id agency_id, stop_id result = request 'stop', id: make_id(agency_id, stop_id) Stop.new result end
stops_for_location(lat, lon)
click to toggle source
# File lib/onebusaway_updated.rb, line 33 def stops_for_location lat, lon result = request 'stops-for-location', lat: lat, lon: lon result['stops'].map do |stop| Stop.new stop end end
stops_for_route(agency_id, route_id)
click to toggle source
# File lib/onebusaway_updated.rb, line 49 def stops_for_route agency_id, route_id result = request 'stops-for-route', id: make_id(agency_id, route_id) result['stops'].map do |stop| Stop.new stop end end
Private Instance Methods
api_url(method, options = {})
click to toggle source
# File lib/onebusaway_updated.rb, line 68 def api_url method, options = {} options[:key] = @api_key id = options.delete :id method = [method, id].compact.join '/' method << '.json' url = @api_base + method url.query = options.to_a.map{|pair| "#{pair[0]}=#{pair[1]}"}.join("&") url end
request(call, url_options)
click to toggle source
# File lib/onebusaway_updated.rb, line 82 def request call, url_options url = api_url call, url_options json = open(url).read result = JSON.parse json code = result['code'].to_s text = result['text'] raise "Request failed (#{code}): #{text}" unless code.start_with? '2' result['data'] end