openhim-core
Version:
The OpenHIM core application that provides logging and routing of http requests
239 lines (164 loc) • 10.8 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.setupApp = setupApp;
var _koa = require('koa');
var _koa2 = _interopRequireDefault(_koa);
var _koaRoute = require('koa-route');
var _koaRoute2 = _interopRequireDefault(_koaRoute);
var _kcors = require('kcors');
var _kcors2 = _interopRequireDefault(_kcors);
var _koaBodyparser = require('koa-bodyparser');
var _koaBodyparser2 = _interopRequireDefault(_koaBodyparser);
var _authentication = require('./api/authentication');
var authentication = _interopRequireWildcard(_authentication);
var _users = require('./api/users');
var users = _interopRequireWildcard(_users);
var _clients = require('./api/clients');
var clients = _interopRequireWildcard(_clients);
var _roles = require('./api/roles');
var roles = _interopRequireWildcard(_roles);
var _transactions = require('./api/transactions');
var transactions = _interopRequireWildcard(_transactions);
var _channels = require('./api/channels');
var channels = _interopRequireWildcard(_channels);
var _tasks = require('./api/tasks');
var tasks = _interopRequireWildcard(_tasks);
var _contactGroups = require('./api/contactGroups');
var contactGroups = _interopRequireWildcard(_contactGroups);
var _events = require('./api/events');
var events = _interopRequireWildcard(_events);
var _mediators = require('./api/mediators');
var mediators = _interopRequireWildcard(_mediators);
var _metrics = require('./api/metrics');
var metrics = _interopRequireWildcard(_metrics);
var _keystore = require('./api/keystore');
var keystore = _interopRequireWildcard(_keystore);
var _restart = require('./api/restart');
var serverRestart = _interopRequireWildcard(_restart);
var _audits = require('./api/audits');
var audits = _interopRequireWildcard(_audits);
var _config = require('./config');
var _heartbeat = require('./api/heartbeat');
var heartbeat = _interopRequireWildcard(_heartbeat);
var _certificateAuthority = require('./api/certificateAuthority');
var certificateAuthority = _interopRequireWildcard(_certificateAuthority);
var _logs = require('./api/logs');
var logs = _interopRequireWildcard(_logs);
var _metadata = require('./api/metadata');
var metadata = _interopRequireWildcard(_metadata);
var _visualizers = require('./api/visualizers');
var visualizers = _interopRequireWildcard(_visualizers);
var _about = require('./api/about');
var about = _interopRequireWildcard(_about);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function setupApp(done) {
// Create an instance of the koa-server and add a body-parser
const app = new _koa2.default();
app.use((0, _kcors2.default)({ allowMethods: 'GET,HEAD,PUT,POST,DELETE' }));
const limitMB = _config.config.api.maxPayloadSizeMB || 16;
app.use((0, _koaBodyparser2.default)({ jsonLimit: limitMB * 1024 * 1024 }));
// Expose uptime server stats route before the auth middleware so that it is publicly accessible
app.use(_koaRoute2.default.get('/heartbeat', heartbeat.getHeartbeat));
// Expose the set-user-password route before the auth middleware so that it is publicly accessible
app.use(_koaRoute2.default.get('/password-reset-request/:email', users.userPasswordResetRequest));
app.use(_koaRoute2.default.get('/token/:token', users.getUserByToken));
app.use(_koaRoute2.default.put('/token/:token', users.updateUserByToken));
// Expose the authenticate route before the auth middleware so that it is publicly accessible
app.use(_koaRoute2.default.get('/authenticate/:username', users.authenticate));
// Authenticate the API request
app.use(authentication.authenticate);
// Define the api routes
app.use(_koaRoute2.default.get('/users', users.getUsers));
app.use(_koaRoute2.default.get('/users/:email', users.getUser));
app.use(_koaRoute2.default.post('/users', users.addUser));
app.use(_koaRoute2.default.put('/users/:email', users.updateUser));
app.use(_koaRoute2.default.delete('/users/:email', users.removeUser));
app.use(_koaRoute2.default.get('/clients', clients.getClients));
app.use(_koaRoute2.default.get('/clients/:clientId', clients.getClient));
app.use(_koaRoute2.default.post('/clients', clients.addClient));
app.use(_koaRoute2.default.get('/clients/domain/:clientDomain', clients.findClientByDomain));
app.use(_koaRoute2.default.put('/clients/:clientId', clients.updateClient));
app.use(_koaRoute2.default.delete('/clients/:clientId', clients.removeClient));
app.use(_koaRoute2.default.get('/clients/:clientId/:property', clients.getClient));
app.use(_koaRoute2.default.get('/roles', roles.getRoles));
app.use(_koaRoute2.default.post('/roles', roles.addRole));
app.use(_koaRoute2.default.get('/roles/:name', roles.getRole));
app.use(_koaRoute2.default.put('/roles/:name', roles.updateRole));
app.use(_koaRoute2.default.delete('/roles/:name', roles.deleteRole));
app.use(_koaRoute2.default.get('/transactions', transactions.getTransactions));
app.use(_koaRoute2.default.post('/transactions', transactions.addTransaction));
app.use(_koaRoute2.default.get('/transactions/:transactionId', transactions.getTransactionById));
app.use(_koaRoute2.default.get('/transactions/clients/:clientId', transactions.findTransactionByClientId));
app.use(_koaRoute2.default.put('/transactions/:transactionId', transactions.updateTransaction));
app.use(_koaRoute2.default.delete('/transactions/:transactionId', transactions.removeTransaction));
app.use(_koaRoute2.default.get('/groups', contactGroups.getContactGroups));
app.use(_koaRoute2.default.get('/groups/:contactGroupId', contactGroups.getContactGroup));
app.use(_koaRoute2.default.post('/groups', contactGroups.addContactGroup));
app.use(_koaRoute2.default.put('/groups/:contactGroupId', contactGroups.updateContactGroup));
app.use(_koaRoute2.default.delete('/groups/:contactGroupId', contactGroups.removeContactGroup));
app.use(_koaRoute2.default.get('/channels', channels.getChannels));
app.use(_koaRoute2.default.post('/channels', channels.addChannel));
app.use(_koaRoute2.default.get('/channels/:channelId', channels.getChannel));
app.use(_koaRoute2.default.get('/channels/:channelId/audits', channels.getChannelAudits));
app.use(_koaRoute2.default.post('/channels/:channelId/trigger', channels.triggerChannel));
app.use(_koaRoute2.default.put('/channels/:channelId', channels.updateChannel));
app.use(_koaRoute2.default.delete('/channels/:channelId', channels.removeChannel));
app.use(_koaRoute2.default.get('/tasks', tasks.getTasks));
app.use(_koaRoute2.default.post('/tasks', tasks.addTask));
app.use(_koaRoute2.default.get('/tasks/:taskId', tasks.getTask));
app.use(_koaRoute2.default.put('/tasks/:taskId', tasks.updateTask));
app.use(_koaRoute2.default.delete('/tasks/:taskId', tasks.removeTask));
app.use(_koaRoute2.default.get('/metrics', ctx => metrics.getMetrics(ctx, false)));
app.use(_koaRoute2.default.get('/metrics/channels', ctx => metrics.getMetrics(ctx, true)));
app.use(_koaRoute2.default.get('/metrics/channels/:channelID', (ctx, channelID) => metrics.getMetrics(ctx, true, null, channelID)));
app.use(_koaRoute2.default.get('/metrics/timeseries/:timeSeries', (ctx, timeseries) => metrics.getMetrics(ctx, false, timeseries)));
app.use(_koaRoute2.default.get('/metrics/timeseries/:timeSeries/channels', (ctx, timeseries) => metrics.getMetrics(ctx, true, timeseries)));
app.use(_koaRoute2.default.get('/metrics/timeseries/:timeSeries/channels/:channelID', (ctx, timeseries, channelID) => metrics.getMetrics(ctx, true, timeseries, channelID)));
app.use(_koaRoute2.default.get('/mediators', mediators.getAllMediators));
app.use(_koaRoute2.default.get('/mediators/:uuid', mediators.getMediator));
app.use(_koaRoute2.default.post('/mediators', mediators.addMediator));
app.use(_koaRoute2.default.delete('/mediators/:urn', mediators.removeMediator));
app.use(_koaRoute2.default.post('/mediators/:urn/heartbeat', mediators.heartbeat));
app.use(_koaRoute2.default.put('/mediators/:urn/config', mediators.setConfig));
app.use(_koaRoute2.default.post('/mediators/:urn/channels', mediators.loadDefaultChannels));
app.use(_koaRoute2.default.get('/keystore/cert', keystore.getServerCert));
app.use(_koaRoute2.default.post('/keystore/cert', keystore.setServerCert));
app.use(_koaRoute2.default.get('/keystore/ca', keystore.getCACerts));
app.use(_koaRoute2.default.get('/keystore/ca/:certId', keystore.getCACert));
app.use(_koaRoute2.default.delete('/keystore/ca/:certId', keystore.removeCACert));
app.use(_koaRoute2.default.post('/keystore/key', keystore.setServerKey));
app.use(_koaRoute2.default.post('/keystore/ca/cert', keystore.addTrustedCert));
app.use(_koaRoute2.default.get('/keystore/validity', keystore.verifyServerKeys));
app.use(_koaRoute2.default.post('/keystore/passphrase', keystore.setServerPassphrase));
// Metadata endpoints
app.use(_koaRoute2.default.get('/metadata', metadata.getMetadata));
app.use(_koaRoute2.default.post('/metadata/validate', metadata.validateMetadata));
app.use(_koaRoute2.default.post('/metadata', metadata.importMetadata));
// Server restart endpoint
app.use(_koaRoute2.default.post('/restart', serverRestart.restart));
// AuditRecord endpoint
app.use(_koaRoute2.default.post('/audits', audits.addAudit));
app.use(_koaRoute2.default.get('/audits', audits.getAudits));
app.use(_koaRoute2.default.get('/audits/:auditId', audits.getAuditById));
app.use(_koaRoute2.default.get('/audits-filter-options', audits.getAuditsFilterOptions));
// Ceritficates endpoint
app.use(_koaRoute2.default.post('/certificates', certificateAuthority.generateCert));
// Logs endpoint
app.use(_koaRoute2.default.get('/logs', logs.getLogs));
// Events endpoint
app.use(_koaRoute2.default.get('/events/:receivedTime', events.getLatestEvents));
// Version endpoint
app.use(_koaRoute2.default.get('/about', about.getAboutInformation));
// Visualizer endpoint
app.use(_koaRoute2.default.get('/visualizers', visualizers.getVisualizers));
app.use(_koaRoute2.default.get('/visualizers/:visualizerId', visualizers.getVisualizer));
app.use(_koaRoute2.default.post('/visualizers', visualizers.addVisualizer));
app.use(_koaRoute2.default.put('/visualizers/:visualizerId', visualizers.updateVisualizer));
app.use(_koaRoute2.default.delete('/visualizers/:visualizerId', visualizers.removeVisualizer));
// Return the result
return done(app);
}
//# sourceMappingURL=koaApi.js.map