UNPKG

forest-express

Version:

Official package for all Forest Express Lianas

51 lines (50 loc) 1.76 kB
"use strict"; var _require = require('@forestadmin/context'), inject = _require.inject; var P = require('bluebird'); var superagent = require('superagent'); var VError = require('verror'); var timeoutError = require('../utils/timeout-error'); var errorMessages = require('../utils/error-messages'); function perform(route, environmentSecret, queryParameters, headers) { var _inject = inject(), forestUrl = _inject.forestUrl; var url = forestUrl + route; // eslint-disable-next-line sonarjs/cognitive-complexity return new P(function (resolve, reject) { var request = superagent.get(url).timeout(process.env.FOREST_REQUEST_TIMEOUT || 30000); if (environmentSecret) { request.set('forest-secret-key', environmentSecret); } if (headers) { request.set(headers); } if (queryParameters) { request.query(queryParameters); } request.end(function (error, result) { if (result) { if (result.status === 200 && result.body) { return resolve(result.body); } if (result.status === 0) { return reject(new Error(errorMessages.SERVER_TRANSACTION.SERVER_DOWN)); } if (result.status === 404) { return reject(new Error(errorMessages.SERVER_TRANSACTION.SECRET_NOT_FOUND)); } if (result.status === 422) { return reject(new Error(errorMessages.SERVER_TRANSACTION.SECRET_AND_RENDERINGID_INCONSISTENT)); } } if (error) { var message = timeoutError(url, error) || 'Forest server request error'; return reject(new VError(error, message)); } return reject(new Error(errorMessages.SERVER_TRANSACTION.UNEXPECTED, error)); }); }); } module.exports = { perform: perform };