nisaacson/riak-streaming-node

View on GitHub
http/validate-response.js

Summary

Maintainability
A
0 mins
Test Coverage
var errorAdapter = require('error-adapter')

var badStatusCodeMessages = {
  400: 'Bad Request',
  412: 'Precondition Failed',
  503: 'Service Unavailable',
  500: 'Internal Server Error'
}

module.exports = function (deferred, validStatusCodes, msg) {
  return function(err, res, body) {
    if (err) {
      return deferred.reject(err)
    }
    var error = validateStatusCode(validStatusCodes, res, body, msg)
    if (error) {
      return deferred.reject(error)
    }
    var output = {
      value: body,
      headers: res.headers
    }
    return deferred.resolve(output)
  }
}

function validateStatusCode(validStatusCodes, res, body, msg) {
  var statusCode = res.statusCode
  msg += '. Bad status code in riak response: "' + statusCode + '" '
  if (validStatusCodes.indexOf(statusCode) >= 0) {
    return
  }
  var customMessage = badStatusCodeMessages.statusCode || 'Unknown Error'
  msg += customMessage
  return createError(statusCode, msg, body)
}

function createError(statusCode, msg, body) {
  return errorAdapter.create({
    message: msg,
    statusCode: statusCode,
    body: body
  })
}