module.exports = popsicleStatus

function popsicleStatus () {
  var lower = 200
  var upper = 399

  if (arguments.length === 1) {
    lower = arguments[0]
    upper = arguments[0]
  }

  if (arguments.length === 2) {
    lower = arguments[0]
    upper = arguments[1]
  }

  return function (req, next) {
    return next().then(function (res) {
      if (res.status >= lower && res.status <= upper) {
        return res
      }

      var message

      if (lower === upper) {
        message = 'equal ' + upper
      } else {
        message = 'be between ' + lower + ' and ' + upper
      }

      var error = req.error(req.url + ' responded with ' + res.status + ', expected it to ' + message, 'EINVALIDSTATUS')
      error.status = res.status
      throw error
    })
  }
}
