]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame_incremental - server/helpers/utils.js
Server: improve requests scheduler
[github/Chocobozzz/PeerTube.git] / server / helpers / utils.js
... / ...
CommitLineData
1'use strict'
2
3const crypto = require('crypto')
4const retry = require('async/retry')
5
6const logger = require('./logger')
7
8const utils = {
9 badRequest,
10 cleanForExit,
11 generateRandomString,
12 isTestInstance,
13 getFormatedObjects,
14 transactionRetryer
15}
16
17function badRequest (req, res, next) {
18 res.type('json').status(400).end()
19}
20
21function generateRandomString (size, callback) {
22 crypto.pseudoRandomBytes(size, function (err, raw) {
23 if (err) return callback(err)
24
25 callback(null, raw.toString('hex'))
26 })
27}
28
29function cleanForExit (webtorrentProcess) {
30 logger.info('Gracefully exiting.')
31 process.kill(-webtorrentProcess.pid)
32}
33
34function isTestInstance () {
35 return (process.env.NODE_ENV === 'test')
36}
37
38function getFormatedObjects (objects, objectsTotal) {
39 const formatedObjects = []
40
41 objects.forEach(function (object) {
42 formatedObjects.push(object.toFormatedJSON())
43 })
44
45 return {
46 total: objectsTotal,
47 data: formatedObjects
48 }
49}
50
51function transactionRetryer (func, callback) {
52 retry({
53 times: 5,
54
55 errorFilter: function (err) {
56 const willRetry = (err.name === 'SequelizeDatabaseError')
57 logger.debug('Maybe retrying the transaction function.', { willRetry })
58 return willRetry
59 }
60 }, func, callback)
61}
62
63// ---------------------------------------------------------------------------
64
65module.exports = utils