281 lines
12 KiB
JavaScript
281 lines
12 KiB
JavaScript
const debug=require('debug')('debug');
|
|
debug('main start...');
|
|
|
|
require('dotenv').config();
|
|
const HELMET = require('helmet');
|
|
const COMPRESSION = require('compression');
|
|
|
|
const express = require("express");
|
|
const CORS = require("cors");
|
|
|
|
//get API root with alive msg
|
|
const ROOTROUTER = require('./route/root');
|
|
|
|
//get overall number of tables in public schema as array[0]['count'] object
|
|
const tableCount = require('./route/table-count');
|
|
|
|
//get overall number of entries per table in public schema as array[0]['count'] object
|
|
const tableAgencyCount = require('./route/table-agency-count');
|
|
const tableAreasCount = require('./route/table-areas-count');
|
|
const tableAttributionsCount = require('./route/table-attributions-count');
|
|
const tableCalendarCount = require('./route/table-calendar-count');
|
|
const tableCalendarDatesCount = require('./route/table-calendar-dates-count');
|
|
const tableFareAttributesCount = require('./route/table-fare-attributes-count');
|
|
const tableFareLegRulesCount = require('./route/table-fare-leg-rules-count');
|
|
const tableFareMediaCount = require('./route/table-fare-media-count');
|
|
const tableFareProductsCount = require('./route/table-fare-products-count');
|
|
const tableFareRulesCount = require('./route/table-fare-rules-count');
|
|
const tableFareTransferRulesCount = require('./route/table-fare-transfer-rules-count');
|
|
const tableFeedInfoCount = require('./route/table-feed-info-count');
|
|
const tableFrequenciesCount = require('./route/table-frequencies-count');
|
|
const tableLevelsCount = require('./route/table-levels-count');
|
|
const tablePathwaysCount = require('./route/table-pathways-count');
|
|
const tableRoutesCount = require('./route/table-routes-count');
|
|
const tableShapesCount = require('./route/table-shapes-count');
|
|
const tableStopAreasCount = require('./route/table-stop-areas-count');
|
|
const tableStopsCount = require('./route/table-stops-count');
|
|
const tableStopTimesCount = require('./route/table-stop-times-count');
|
|
const tableTransfersCount = require('./route/table-transfers-count');
|
|
const tableTranslationsCount = require('./route/table-translations-count');
|
|
const tableTripsCount = require('./route/table-trips-count');
|
|
|
|
//get all table names in public schema as array[i]['table_name'] object
|
|
const tableNames = require('./route/table-names');
|
|
|
|
//get all agency_id values
|
|
const agencyIds = require('./route/agencyids');
|
|
|
|
//get agencies using pagination
|
|
const AGENCYROUTER = require('./route/agency');
|
|
|
|
//get agency_name from route_id
|
|
const AGENCYNAMEROUTER = require('./route/agency-name');
|
|
|
|
//get agency_url from route_id
|
|
const AGENCYURLROUTER = require('./route/agency-url');
|
|
|
|
//get all entries from table
|
|
const AGENCYALLROUTER = require('./route/agency-all');
|
|
const FREQUENCIESALLROUTER = require('./route/frequencies-all');
|
|
const ROUTESALLROUTER = require('./route/routes-all');
|
|
const STOPSALLROUTER = require('./route/stops-all');
|
|
|
|
//get table entries using offset and limit
|
|
const agencyOsetLimit = require('./route/agency-oset-limit');
|
|
const agencyIdName = require('./route/agency-id-name');
|
|
const calendarOsetLimit = require('./route/calendar-oset-limit');
|
|
const calendarDatesOsetLimit = require('./route/calendar-dates-oset-limit');
|
|
const frequenciesOsetLimit = require('./route/frequencies-oset-limit');
|
|
const levelsOsetLimit = require('./route/levels-oset-limit');
|
|
const pathwaysOsetLimit = require('./route/pathways-oset-limit');
|
|
const routesOsetLimit = require('./route/routes-oset-limit');
|
|
const shapesOsetLimit = require('./route/shapes-oset-limit');
|
|
const stopsOsetLimit = require('./route/stops-oset-limit');
|
|
const stopTimesOsetLimit = require('./route/stop-times-oset-limit');
|
|
const transfersOsetLimit = require('./route/transfers-oset-limit');
|
|
const tripsOsetLimit = require('./route/trips-oset-limit');
|
|
|
|
//get route_short_name from trip_short_name
|
|
const ROUTESHORTNAME = require('./route/route-short-name');
|
|
|
|
//get service by service_id
|
|
const ROUTESERVICE = require('./route/service');
|
|
|
|
//get all service days that belong to a certain route_short_name
|
|
/** TODO Disable this route as it is not working!
|
|
const ROUTESERVICEDAYS = require('./route/servicedays');
|
|
*/
|
|
|
|
//get all service with counts of routes
|
|
const ROUTESERVICEOVERVIEW = require('./route/service-overview');
|
|
|
|
//get number of routes belonging to the same agency_id
|
|
const ROUTECOUNT = require('./route/route-count');
|
|
|
|
// get overall number of ...
|
|
const numberOfRoutes = require('./route/number-of-routes');
|
|
const numberOfTrips = require('./route/number-of-trips');
|
|
|
|
//get routes belonging to the same agency_id
|
|
const routesByAgencyId = require('./route/routes-by-agency-id');
|
|
|
|
//get all service dates by service_id (including additions and exceptions)
|
|
const serviceAvailability=require('./route/service-availability');
|
|
|
|
//get service availability for all trips belonging to the specified route_id
|
|
const serviceAbilityByRouteId=require('./route/service-ability-by-route-id');
|
|
|
|
//get array of dates when service is available by service_id
|
|
const datesServiceAvailable=require('./route/dates-service-available');
|
|
|
|
//get array of dates when service is added by service_id
|
|
const datesServiceAdded=require('./route/dates-service-added');
|
|
|
|
//get array of dates when service is removed by service_id
|
|
const datesServiceRemoved=require('./route/dates-service-removed');
|
|
|
|
//get trip_headsign from trip_short_name
|
|
const TRIPHEADSIGNROUTER = require('./route/trip-headsign');
|
|
|
|
/*SELECT trip_id,trip_short_name,trip_headsign,routes.route_id,routes.route_short_name,routes.route_type,agency.agency_id,agency.agency_name,agency.agency_url FROM agency,routes,trips WHERE trip_short_name ='1944027' AND trips.route_id = routes.route_id AND routes.agency_id = agency.agency_id;*/
|
|
//get pt info by trip_short_name from IVU radio interface location message
|
|
const ptByIfleet = require('./route/pt-by-ifleet');
|
|
|
|
//get all trips that belong to a certain route_short_name
|
|
const TRIPSROUTER = require('./route/trips');
|
|
|
|
//get all trips that belong to the specified route_id
|
|
const tripsByRouteId = require('./route/trips-by-route-id');
|
|
|
|
//get trips by route_id and day YYY-M(M)-D(D)
|
|
const tripsByRouteDay = require('./route/trips-by-route-day');
|
|
|
|
//get trip updates by route_id and day YYY-M(M)-D(D)
|
|
const tripUpdatesByRouteDay = require('./route/trip-updates-by-route-day');
|
|
|
|
//get overall trip counts for calendar dates that belong to the specified route_id
|
|
const tripCalendarByRouteId = require('./route/trip-calendar-by-route-id');
|
|
|
|
//get overall trip counts for calendar dates that belong to the specified agency_id
|
|
const tripCalendarByAgencyId = require('./route/trip-calendar-by-agency-id');
|
|
|
|
//get overall trip count that belong to a calendar date
|
|
const tripCountDayAgency = require('./route/trip-count-day-agency');
|
|
const tripCountDayRoute = require('./route/trip-count-day-route');
|
|
|
|
//get all services that belong to the specified route_id
|
|
const servicesByRouteId = require('./route/services-by-route-id');
|
|
|
|
//get number of trips belonging to the same agency_id
|
|
const TRIPCOUNT = require('./route/trip-count');
|
|
|
|
//TODO make this list available via config
|
|
//limit access to this origin list
|
|
let whitelist = [
|
|
'http://localhost:8080',
|
|
'http(s)://foo.bar'
|
|
];
|
|
|
|
const app = express();
|
|
|
|
//compress all routes
|
|
app.use(COMPRESSION());
|
|
|
|
//protect against vulnerabilities
|
|
app.use(HELMET());
|
|
|
|
//configure CORS
|
|
app.use(CORS({
|
|
origin: function(origin, callback){
|
|
// allow requests with no origin
|
|
debug('origin: '+origin)
|
|
if(!origin){
|
|
return callback(null, true);
|
|
}
|
|
if(whitelist.indexOf(origin) === -1){
|
|
let message = 'The CORS policy for this origin does not allow access from the particular origin: '+origin;
|
|
return callback(new Error(message), false);
|
|
}
|
|
debug('origin: '+origin+' allowed by CORS');
|
|
return callback(null, true);
|
|
}
|
|
}));
|
|
//api enable/disable?
|
|
app.use('/', ROOTROUTER);
|
|
//agency
|
|
app.use('/agency', AGENCYROUTER);
|
|
app.use('/agency-name', AGENCYNAMEROUTER);
|
|
app.use('/agency-url', AGENCYURLROUTER);
|
|
app.use('/agencyids',agencyIds);
|
|
|
|
//get all entries from table
|
|
app.use('/agency-all', AGENCYALLROUTER);
|
|
app.use('/frequencies-all', FREQUENCIESALLROUTER);
|
|
app.use('/routes-all', ROUTESALLROUTER);
|
|
app.use('/stops-all', STOPSALLROUTER);
|
|
|
|
//offset and limit
|
|
app.use('/agency-oset-limit',agencyOsetLimit);
|
|
app.use('/agency-id-name-oset-limit',agencyIdName);
|
|
app.use('/calendar-oset-limit',calendarOsetLimit);
|
|
app.use('/calendar_dates-oset-limit',calendarDatesOsetLimit);
|
|
app.use('/frequencies-oset-limit',frequenciesOsetLimit);
|
|
app.use('/levels-oset-limit',levelsOsetLimit);
|
|
app.use('/pathways-oset-limit',pathwaysOsetLimit);
|
|
app.use('/routes-oset-limit',routesOsetLimit);
|
|
app.use('/shapes-oset-limit',shapesOsetLimit);
|
|
app.use('/stops-oset-limit',stopsOsetLimit);
|
|
app.use('/stop_times-oset-limit',stopTimesOsetLimit);
|
|
app.use('/transfers-oset-limit',transfersOsetLimit);
|
|
app.use('/trips-oset-limit',tripsOsetLimit);
|
|
//get routes by agency_id
|
|
app.use('/routes',routesByAgencyId);
|
|
|
|
//count
|
|
//get route count by providing agency_id
|
|
app.use('/route-count', ROUTECOUNT);
|
|
app.use('/trip-count', TRIPCOUNT);
|
|
app.use('/number-of-routes', numberOfRoutes);
|
|
app.use('/number-of-trips', numberOfTrips);
|
|
|
|
//get route_short-name by providing trip_short_name
|
|
app.use('/route-short-name', ROUTESHORTNAME);
|
|
|
|
app.use('/pt-by-ifleet', ptByIfleet);
|
|
//trips
|
|
app.use('/trip-headsign', TRIPHEADSIGNROUTER);
|
|
app.use('/trips', TRIPSROUTER);
|
|
app.use('/trips-by-route-id', tripsByRouteId);
|
|
app.use('/trip-count-day-agency', tripCountDayAgency);
|
|
app.use('/trip-count-day-route', tripCountDayRoute);
|
|
app.use('/trip-calendar-by-agency-id', tripCalendarByAgencyId);
|
|
app.use('/trip-calendar-by-route-id', tripCalendarByRouteId);
|
|
app.use('/trips-by-route-day', tripsByRouteDay);
|
|
//trip updates
|
|
app.use('/trip-updates-by-route-day', tripUpdatesByRouteDay);
|
|
//service
|
|
app.use('/service', ROUTESERVICE);
|
|
/** TODO Disable this route as it is not working!
|
|
app.use('/servicedays', ROUTESERVICEDAYS);
|
|
*/
|
|
app.use('/service-overview', ROUTESERVICEOVERVIEW);
|
|
app.use('/dates-service-available',datesServiceAvailable);
|
|
app.use('/dates-service-added',datesServiceAdded);
|
|
app.use('/dates-service-removed',datesServiceRemoved);
|
|
app.use('/service-availability',serviceAvailability);
|
|
app.use('/service-ability-by-route-id',serviceAbilityByRouteId);
|
|
app.use('/services-by-route-id', servicesByRouteId);
|
|
//entry count
|
|
app.use('/table-areas-count', tableAreasCount);
|
|
app.use('/table-agency-count', tableAgencyCount);
|
|
app.use('/table-attributions-count', tableAttributionsCount);
|
|
app.use('/table-calendar-count', tableCalendarCount);
|
|
app.use('/table-calendar_dates-count', tableCalendarDatesCount);
|
|
app.use('/table-fare_attributes-count', tableFareAttributesCount);
|
|
app.use('/table-fare_leg-rules-count', tableFareLegRulesCount);
|
|
app.use('/table-fare_media-count', tableFareMediaCount);
|
|
app.use('/table-fare_products-count', tableFareProductsCount);
|
|
app.use('/table-fare_rules-count', tableFareRulesCount);
|
|
app.use('/table-fare_transfer-rules-count', tableFareTransferRulesCount);
|
|
app.use('/table-feed_info-count', tableFeedInfoCount);
|
|
app.use('/table-frequencies-count', tableFrequenciesCount);
|
|
app.use('/table-levels-count', tableLevelsCount);
|
|
app.use('/table-pathways-count', tablePathwaysCount);
|
|
app.use('/table-routes-count', tableRoutesCount);
|
|
app.use('/table-shapes-count', tableShapesCount);
|
|
app.use('/table-stop_areas-count', tableStopAreasCount);
|
|
app.use('/table-stops-count', tableStopsCount);
|
|
app.use('/table-stop_times-count', tableStopTimesCount);
|
|
app.use('/table-transfers-count', tableTransfersCount);
|
|
app.use('/table-translations-count', tableTranslationsCount);
|
|
app.use('/table-trips-count', tableTripsCount);
|
|
|
|
//number of tables
|
|
app.use('/table-count', tableCount);
|
|
|
|
//array with name of all tables
|
|
app.use('/table-names', tableNames);
|
|
|
|
module.exports=app;
|
|
debug('main done..');
|