Commit d9261dd1 authored by Michael Vernier's avatar Michael Vernier

added full api functionality

parent d248bb39
// Write your package code here!
URL = Npm.require( 'url' );
moment = Npm.require( 'moment' )
OSUTrip = {};
var apikey;
var baseurl = 'http://trip.osu.edu'
OSUTrip.setKey = function( key )
{
apikey = key;
}
OSUTrip.getTime = function()
{
if( apikey )
{
var url = URL.resolve( baseurl, 'bustime/api/v1/gettime' );
var response = HTTP.call( 'GET', url, { params: { key: apikey } } );
bustimeresponse = xml2js.parseStringSync( response.content )[ 'bustime-response' ];
if( bustimeresponse.error )
{
throw bustimeresponse.error;
}
return moment( bustimeresponse.tm, 'YYYYMMDD HH:mm:ss' ).toDate();
}
else
{
throw 'API key required';
}
}
OSUTrip.getRoutes = function()
{
if( apikey )
{
var url = URL.resolve( baseurl, 'bustime/api/v1/getroutes' );
var response = HTTP.call( 'GET', url, { params: { key: apikey } } );
bustimeresponse = xml2js.parseStringSync( response.content )[ 'bustime-response' ];
if( bustimeresponse.error )
{
throw bustimeresponse.error;
}
return bustimeresponse.route;
}
else
{
throw 'API key required';
}
}
// route = route designator ( e.g. 'CLS' )
OSUTrip.getRouteDirection = function( route )
{
if( apikey )
{
if( route )
{
var url = URL.resolve( baseurl, 'bustime/api/v1/getdirections' );
var response = HTTP.call( 'GET', url, { params: { key: apikey, rt: route } } );
bustimeresponse = xml2js.parseStringSync( response.content )[ 'bustime-response' ];
if( bustimeresponse.error )
{
throw bustimeresponse.error;
}
return bustimeresponse.dir;
}
else
{
throw 'Parameter \'route\' required';
}
}
else
{
throw 'API key required';
}
}
OSUTrip.getRouteStops = function( route )
{
try
{
var direction = OSUTrip.getRouteDirection( route );
var url = URL.resolve( baseurl, 'bustime/api/v1/getstops' );
var response = HTTP.call( 'GET', url, { params: { key: apikey, rt: route, dir: direction } } );
bustimeresponse = xml2js.parseStringSync( response.content )[ 'bustime-response' ];
if( bustimeresponse.error )
{
throw bustimeresponse.error;
}
return bustimeresponse.stop;
}
catch( e )
{
throw e;
}
}
OSUTrip.getRoutePatterns = function( route )
{
if( apikey )
{
if( route )
{
var url = URL.resolve( baseurl, 'bustime/api/v1/getpatterns' );
var response = HTTP.call( 'GET', url, { params: { key: apikey, rt: route } } );
bustimeresponse = xml2js.parseStringSync( response.content )[ 'bustime-response' ];
if( bustimeresponse.error )
{
throw bustimeresponse.error;
}
return bustimeresponse.ptr;
}
else
{
throw 'Parameter \'route\' required';
}
}
else
{
throw 'API key required';
}
}
OSUTrip.getRoutePredictions = function( route, stopId, numPredictions )
{
if( apikey )
{
if( route && stopId )
{
var url = URL.resolve( baseurl, 'bustime/api/v1/getpredictions' );
var params = { key: apikey, rt: route, stpid: stopId };
if( numPredictions )
{
params.top = numPredictions;
}
var response = HTTP.call( 'GET', url, { params: params } );
bustimeresponse = xml2js.parseStringSync( response.content )[ 'bustime-response' ];
if( bustimeresponse.error )
{
throw bustimeresponse.error;
}
return bustimeresponse.prd;
}
else
{
throw 'Parameters \'route\' and \'stopId\' required';
}
}
else
{
throw 'API key required';
}
}
OSUTrip.getBuses = function( route )
{
if( apikey )
{
if( route )
{
var routestr = '';
if( Array.isArray( route ) )
{
_.each( route, function( r )
{
routestr += r;
routestr += ',';
});
// remove trailing comma
routestr = routestr.substring( 0, routestr.length - 1 );
}
else
{
routestr = route;
}
var url = URL.resolve( baseurl, 'bustime/api/v1/getvehicles' );
var response = HTTP.call( 'GET', url, { params: { key: apikey, rt: routestr } } );
bustimeresponse = xml2js.parseStringSync( response.content )[ 'bustime-response' ];
if( bustimeresponse.error )
{
throw bustimeresponse.error;
}
return bustimeresponse.vehicle;
}
else
{
throw 'Parameters \'route\' and \'stopId\' required';
}
}
else
{
throw 'API key required';
}
}
\ No newline at end of file
Package.describe({
name: 'swyphcosmo:osu-trip',
version: '0.0.1',
// Brief, one-line summary of the package.
summary: 'Meteor package for accessing the Ohio State University BusTime API',
// URL to the Git repository containing the source code for this package.
git: 'http://www.swyphcosmo.com/vernierm/osu-trip',
// By default, Meteor will default to using README.md for documentation.
// To avoid submitting documentation, set this field to null.
documentation: 'README.md'
name: 'swyphcosmo:osu-trip',
version: '0.1.0',
// Brief, one-line summary of the package.
summary: 'Meteor package for accessing the Ohio State University BusTime API',
// URL to the Git repository containing the source code for this package.
git: 'http://www.swyphcosmo.com/vernierm/osu-trip',
// By default, Meteor will default to using README.md for documentation.
// To avoid submitting documentation, set this field to null.
documentation: 'README.md'
});
Npm.depends({
url: '0.10.3',
moment: '2.9.0'
});
Package.onUse(function(api) {
api.versionsFrom('1.1');
api.addFiles('osu-trip.js');
api.versionsFrom('1.1');
api.use( 'http', 'server' );
api.use('peerlibrary:xml2js');
api.export( 'OSUTrip', 'server' );
api.addFiles('osu-trip.js', 'server');
});
Package.onTest(function(api) {
api.use('tinytest');
api.use('swyphcosmo:osu-trip');
api.addFiles('osu-trip-tests.js');
api.use('tinytest');
api.use('swyphcosmo:osu-trip');
api.addFiles('osu-trip-tests.js');
});
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment