@carlosbajo/micro
Version:
framework para microservicios con google/pubsub
46 lines (40 loc) • 1.55 kB
JavaScript
// require('@google-cloud/trace-agent').start();
;
const Koa = require('koa');
const Boom = require('boom');
const cors = require('koa-cors');
const koaJwt = require('koa-jwt');
const convert = require('koa-convert');
const bodyParser = require('koa-bodyparser');
const jwtConfig = require('./lib/jwt');
const db = require('./lib/db');
const Pubsub = require('./lib/pubsubr');
const logger = require('./lib/logger').logger;
const Reporter = require('./lib/logger').reporter;
const initialize = require('./lib/load');
/* eslint-disable */
const name = require(`${process.cwd()}/package.json`).name;
const checkParams = (port, secret) => {
if (!port || !secret) throw Boom.badImplementation('Missing required Values');
};
const app = new Koa();
module.exports = {
start: async (port, secret, googleKey) => {
checkParams(port, secret);
app.use(convert(cors()));
app.use(bodyParser({ jsonLimit: '1mb', textLimit: '1mb' })); // Max parcing size of data
app.use(koaJwt({ secret, passthrough: true })); // Jwt middleware
app.use(jwtConfig.middleware); // Get the token from header.
app.logger = logger(app, googleKey || undefined);
app.datasources = await db.connect(app.logger, Reporter);
app.name = name;
const pubsub = new Pubsub();
await pubsub.openConnection();
app.PubSub = pubsub;
initialize(app);
app.listen(port, '0.0.0.0');
app.logger.info(`Server running on port ${port}`);
app.logger.info(`ENVIROMENT: ${process.env.NODE_ENV || 'development'}`);
},
app,
};