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