node-511
Version:
Lightweight node.js wrapper for the 511.org real time driving times and transit departure APIs
54 lines (38 loc) • 1.49 kB
text/coffeescript
AbstractService = require './AbstractService'
class GetStopsForRoute extends AbstractService
invoke: (parameters = {}, callback = () ->) =>
if !parameters.route && !parameters.routeIDF
return callback new Error "Call to service #{ @constructor.name } must include parameter route or routeIDF"
if parameters.route
params = []
if parameters.route.agencyName
params.push parameters.route.agencyName
if parameters.route.routeCode
params.push parameters.route.routeCode
if parameters.route.routeDirectionCode
params.push parameters.route.routeDirectionCode
parameters.routeIDF = params.join '~'
delete parameters.route
super parameters, callback
_parse: (obj) ->
for _A in obj?.RTT?.AgencyList?[0]?.Agency ? []
if (_A?['$']?.Name)
name =_A?['$']?.Name
agency =
HasDirection: 'True' == _A?['$']?.HasDirection
Mode: _A?['$']?.Mode ? null
routes = {}
for _R in (_A?.RouteList?[0]?.Route ? [])
if (_R?['$']?.Name)
routes[_R['$'].Name] =
Code: _R?['$']?.Code ? null
stops = []
for _S in (_R?.StopList[0]?.Stop ? [])
if (_S['$']?.name)
stops.push
Name: _S['$'].name
StopCode: _S['$']?.StopCode ? null
routes[_R['$'].Name].Stops = stops
agency.Routes = routes
agency
module.exports = GetStopsForRoute