const logger = require('koa-logger') | |
const responseTime = require('koa-response-time') | |
const bodyParser = require('koa-bodyparser') | |
const ratelimit = require('koa-ratelimit') | |
const Router = require('koa-router') | |
const Koa = require('koa') | |
const app = new Koa() | |
app.use(logger()) | |
app.use(responseTime()) | |
app.use(bodyParser()) | |
const ratelimitВb = new Map() | |
app.use(ratelimit({ | |
driver: 'memory', | |
db: ratelimitВb, | |
duration: 1000 * 55, | |
errorMessage: { | |
ok: false, | |
error: { | |
code: 429, | |
message: 'Rate limit exceeded. See "Retry-After"' | |
} | |
}, | |
id: (ctx) => ctx.ip, | |
headers: { | |
remaining: 'Rate-Limit-Remaining', | |
reset: 'Rate-Limit-Reset', | |
total: 'Rate-Limit-Total' | |
}, | |
max: 20, | |
disableHeader: false, | |
whitelist: (ctx) => { | |
return ctx.query.botToken === process.env.BOT_TOKEN | |
}, | |
blacklist: (ctx) => { | |
} | |
})) | |
app.use(require('./helpers').helpersApi) | |
const route = new Router() | |
const routes = require('./routes') | |
route.use('/*', routes.routeApi.routes()) | |
app.use(route.routes()) | |
const port = process.env.PORT || 3000 | |
app.listen(port, () => { | |
console.log('Listening on localhost, port', port) | |
}) | |