UNPKG

@adobe/helix-pipeline

Version:

This project provides helper functions and default implementations for creating Hypermedia Processing Pipelines.

64 lines (58 loc) 1.71 kB
/* * Copyright 2018 Adobe. All rights reserved. * This file is licensed to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. You may obtain a copy * of the License at http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS * OF ANY KIND, either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ const { setdefault } = require('ferrum'); function setVerboseError(error) { const res = { response: { status: 500, body: JSON.stringify({ status: 500, statusText: error.trim(), }), headers: { 'Content-Type': 'application/json', }, }, }; return res; } function selectStatus(prod) { return ({ response = {}, error }, { logger, request = {} }) => { // if a status is already default, keep it. if (response.status) { return {}; } if (!error) { return { response: { status: 200, }, }; } // error handling logger.debug('context.error -> 500'); if (prod && !setdefault(request, 'headers', {})['x-debug']) { return { response: { status: 500, body: '', }, }; } return setVerboseError(error); }; } function setStatus({ response = {}, error }, { logger }) { return selectStatus(false)({ response, error }, { logger }); } module.exports = setStatus; module.exports.selectStatus = selectStatus;