Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
const { verboseLogging } = require('../constants');
/**
 * Fetch error handler
 */
const errorHandler = error => {
  if (error.details && error.details.errors) {
    // transform errors to lower-case
    const errors = Object.keys(error.details.errors).reduce(
      (memo, key) =>
        Object.assign(memo, { [key.toLowerCase()]: error.details.errors[key].toLowerCase().replace(/_/g, '-') }),
      {}
    );
    throw errors;
  }
  throw error;
};

/**
 * Fetch response handler
 */
const responseHandler = response => {
  if (verboseLogging) {
    const { url, status, statusText, ok } = response;
    console.log({ url, status, statusText, ok });
  }

  const { headers } = response;
  const contentType = headers.get('content-type');
  if (contentType && contentType.includes('application/json')) {
    if (response.status >= 200 && response.status < 300) {
      return response.json();
    }
    return response.json().then(errorHandler);
  }
  if (response.status >= 200 && response.status < 300) {
    return response.text();
  }
  return response.text().then(errorHandler);
};

module.exports = {
  errorHandler,
  responseHandler,
};