1
0
Fork 0
mirror of https://github.com/openstf/stf synced 2025-10-03 17:59:28 +02:00
OpenSTF/lib/util/requtil.js
2016-01-19 20:52:38 +09:00

51 lines
1,019 B
JavaScript

var util = require('util')
var Promise = require('bluebird')
function ValidationError(message, errors) {
Error.call(this, message)
this.name = 'ValidationError'
this.errors = errors
Error.captureStackTrace(this, ValidationError)
}
util.inherits(ValidationError, Error)
module.exports.ValidationError = ValidationError
module.exports.validate = function(req, rules) {
return new Promise(function(resolve, reject) {
rules()
var errors = req.validationErrors()
if (!errors) {
resolve()
}
else {
reject(new ValidationError('validation error', errors))
}
})
}
module.exports.limit = function(limit, handler) {
var queue = []
var running = 0
/* eslint no-use-before-define: 0 */
function maybeNext() {
while (running < limit && queue.length) {
running += 1
handler.apply(null, queue.shift()).finally(done)
}
}
function done() {
running -= 1
maybeNext()
}
return function() {
queue.push(arguments)
maybeNext()
}
}