1
0
Fork 0
mirror of https://github.com/openstf/stf synced 2025-10-04 18:29:17 +02:00
OpenSTF/lib/util/requtil.js
2014-05-21 14:32:21 +09:00

50 lines
980 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
function done() {
running -= 1
maybeNext()
}
function maybeNext() {
while (running < limit && queue.length) {
running += 1
handler.apply(null, queue.shift()).finally(done)
}
}
return function() {
queue.push(arguments)
maybeNext()
}
}