class SFBATransitAPI::Client
Attributes
connection[RW]
Public Class Methods
new(token, options={})
click to toggle source
Initialize the client
@param token [String] obtained from www.511.org/developer-resources_api-security-token_rtt.asp @return [String] the object converted into the expected format.
# File lib/sfba_transit_api/client.rb, line 12 def initialize(token, options={}) self.connection = Connection.new(token, options) end
Public Instance Methods
get(method, options={})
click to toggle source
# File lib/sfba_transit_api/client.rb, line 54 def get(method, options={}) self.connection.get(method, options) end
get_agencies()
click to toggle source
# File lib/sfba_transit_api/client.rb, line 16 def get_agencies response = get(:get_agencies) parse(response) end
get_next_departures_by_stop_code(stopcode)
click to toggle source
# File lib/sfba_transit_api/client.rb, line 42 def get_next_departures_by_stop_code(stopcode) response = get(:get_next_departures_by_stop_code, stopcode: stopcode) parse(response) end
get_routes_for_agencies(agency_names)
click to toggle source
# File lib/sfba_transit_api/client.rb, line 28 def get_routes_for_agencies(agency_names) response = get(:get_routes_for_agencies, {agency_names: agency_names.join("|")}) parse(response) end
get_routes_for_agency(agency_name)
click to toggle source
# File lib/sfba_transit_api/client.rb, line 22 def get_routes_for_agency(agency_name) response = get(:get_routes_for_agency, {agency_name: agency_name}) parse(response) end
get_stops_for_route(route_info)
click to toggle source
# File lib/sfba_transit_api/client.rb, line 34 def get_stops_for_route(route_info) route_idf = makeRouteIDF(route_info) response = get(:get_stops_for_route, {route_idf: route_idf}) parse(response) end
makeRouteIDF(route_info)
click to toggle source
# File lib/sfba_transit_api/client.rb, line 48 def makeRouteIDF(route_info) route_idf = "#{route_info[:agency_name]}~#{route_info[:route_code]}" route_idf += "~#{route_info[:route_direction_code]}" if route_info[:route_direction_code] route_idf end
parse(doc)
click to toggle source
# File lib/sfba_transit_api/client.rb, line 58 def parse(doc) agency_list_node = doc.at_xpath("//AgencyList") if agency_list_node parse_agencies(agency_list_node) else nil end end
parse_agencies(agency_list_node)
click to toggle source
# File lib/sfba_transit_api/client.rb, line 67 def parse_agencies(agency_list_node) agency_list_node.xpath("./Agency").map do |agency_node| result = { "type" => "agency" } agency_node.attributes.each do |key, val| result[key.underscore] = to_boolean_if_possible(val.value) end route_list_node = agency_node.at_xpath("./RouteList") if route_list_node result["routes"] = parse_routes(route_list_node) end result end end
parse_departure_times(departure_time_list_node)
click to toggle source
# File lib/sfba_transit_api/client.rb, line 140 def parse_departure_times(departure_time_list_node) departure_time_list_node.xpath("./DepartureTime").map do |departure_time_node| departure_time_node.text ? departure_time_node.text.to_i : nil end end
parse_route_directions(route_direction_list_node)
click to toggle source
# File lib/sfba_transit_api/client.rb, line 106 def parse_route_directions(route_direction_list_node) route_direction_list_node.xpath("./RouteDirection").map do |route_direction_node| result = { "type" => "route_direction" } route_direction_node.attributes.each do |key, val| result[key.underscore] = val.value end stop_list_node = route_direction_node.at_xpath("./StopList") if stop_list_node result["stops"] = parse_stops(stop_list_node) end result end end
parse_routes(route_list_node)
click to toggle source
# File lib/sfba_transit_api/client.rb, line 84 def parse_routes(route_list_node) route_list_node.xpath("./Route").map do |route_node| result = { "type" => "route" } route_node.attributes.each do |key, val| result[key.underscore] = val.value end route_direction_list_node = route_node.at_xpath("./RouteDirectionList") if route_direction_list_node result["route_directions"] = parse_route_directions(route_direction_list_node) else stop_list_node = route_node.at_xpath("./StopList") if stop_list_node result["stops"] = parse_stops(stop_list_node) end end result end end
parse_stops(stop_list_node)
click to toggle source
# File lib/sfba_transit_api/client.rb, line 123 def parse_stops(stop_list_node) stop_list_node.xpath("./Stop").map do |stop_node| result = { "type" => "stop" } stop_node.attributes.each do |key, val| result[key.underscore] = val.value end departure_time_list_node = stop_node.at_xpath("./DepartureTimeList") if departure_time_list_node result["departure_times"] = parse_departure_times(departure_time_list_node) end result end end
to_boolean_if_possible(value)
click to toggle source
# File lib/sfba_transit_api/client.rb, line 146 def to_boolean_if_possible(value) if value.downcase == "true" true elsif value.downcase == "false" false else value end end