From 65fcc3119c334b75dd13bcfdebf186afdc580a8f Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 15 May 2017 22:22:03 +0200 Subject: First typescript iteration --- server/controllers/api/requests.ts | 57 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 server/controllers/api/requests.ts (limited to 'server/controllers/api/requests.ts') diff --git a/server/controllers/api/requests.ts b/server/controllers/api/requests.ts new file mode 100644 index 000000000..304499a4f --- /dev/null +++ b/server/controllers/api/requests.ts @@ -0,0 +1,57 @@ +import express = require('express') +import { parallel } from 'async' + +import { + getRequestScheduler, + getRequestVideoQaduScheduler, + getRequestVideoEventScheduler +} from '../../lib' +import { authenticate, ensureIsAdmin } from '../../middlewares' + +const requestsRouter = express.Router() + +requestsRouter.get('/stats', + authenticate, + ensureIsAdmin, + getStatsRequests +) + +// --------------------------------------------------------------------------- + +export { + requestsRouter +} + +// --------------------------------------------------------------------------- + +function getStatsRequests (req, res, next) { + parallel({ + requestScheduler: buildRequestSchedulerFunction(getRequestScheduler()), + requestVideoQaduScheduler: buildRequestSchedulerFunction(getRequestVideoQaduScheduler()), + requestVideoEventScheduler: buildRequestSchedulerFunction(getRequestVideoEventScheduler()) + }, function (err, result) { + if (err) return next(err) + + return res.json(result) + }) +} + +// --------------------------------------------------------------------------- + +function buildRequestSchedulerFunction (requestScheduler) { + return function (callback) { + requestScheduler.remainingRequestsCount(function (err, count) { + if (err) return callback(err) + + const result = { + totalRequests: count, + requestsLimitPods: requestScheduler.limitPods, + requestsLimitPerPod: requestScheduler.limitPerPod, + remainingMilliSeconds: requestScheduler.remainingMilliSeconds(), + milliSecondsInterval: requestScheduler.requestInterval + } + + return callback(null, result) + }) + } +} -- cgit v1.2.3