popsicle-status.js 778 B

123456789101112131415161718192021222324252627282930313233343536
  1. module.exports = popsicleStatus
  2. function popsicleStatus () {
  3. var lower = 200
  4. var upper = 399
  5. if (arguments.length === 1) {
  6. lower = arguments[0]
  7. upper = arguments[0]
  8. }
  9. if (arguments.length === 2) {
  10. lower = arguments[0]
  11. upper = arguments[1]
  12. }
  13. return function (req, next) {
  14. return next().then(function (res) {
  15. if (res.status >= lower && res.status <= upper) {
  16. return res
  17. }
  18. var message
  19. if (lower === upper) {
  20. message = 'equal ' + upper
  21. } else {
  22. message = 'be between ' + lower + ' and ' + upper
  23. }
  24. var error = req.error(req.url + ' responded with ' + res.status + ', expected it to ' + message, 'EINVALIDSTATUS')
  25. error.status = res.status
  26. throw error
  27. })
  28. }
  29. }