]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/controllers/api/requests.js
Fix request schedulers stats
[github/Chocobozzz/PeerTube.git] / server / controllers / api / requests.js
1 'use strict'
2
3 const express = require('express')
4 const parallel = require('async/parallel')
5
6 const constants = require('../../initializers/constants')
7 const friends = require('../../lib/friends')
8 const middlewares = require('../../middlewares')
9 const admin = middlewares.admin
10 const oAuth = middlewares.oauth
11
12 const router = express.Router()
13
14 router.get('/stats',
15 oAuth.authenticate,
16 admin.ensureIsAdmin,
17 getStatsRequests
18 )
19
20 // ---------------------------------------------------------------------------
21
22 module.exports = router
23
24 // ---------------------------------------------------------------------------
25
26 function getStatsRequests (req, res, next) {
27 parallel({
28 requestScheduler: buildRequestSchedulerFunction(friends.getRequestScheduler()),
29 requestVideoQaduScheduler: buildRequestSchedulerFunction(friends.getRequestVideoQaduScheduler()),
30 requestVideoEventScheduler: buildRequestSchedulerFunction(friends.getRequestVideoEventScheduler())
31 }, function (err, result) {
32 if (err) return next(err)
33
34 return res.json(result)
35 })
36 }
37
38 // ---------------------------------------------------------------------------
39
40 function buildRequestSchedulerFunction (requestScheduler) {
41 return function (callback) {
42 requestScheduler.remainingRequestsCount(function (err, count) {
43 if (err) return callback(err)
44
45 const result = {
46 totalRequests: count,
47 requestsLimitPods: requestScheduler.limitPods,
48 requestsLimitPerPod: requestScheduler.limitPerPod,
49 remainingMilliSeconds: requestScheduler.remainingMilliSeconds(),
50 milliSecondsInterval: requestScheduler.requestInterval
51 }
52
53 return callback(null, result)
54 })
55 }
56 }