UNPKG

@carlosbajo/micro

Version:

framework para microservicios con google/pubsub

46 lines (40 loc) 1.55 kB
// require('@google-cloud/trace-agent').start(); 'use strict'; 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, };