UNPKG

@case-contract-testing/case

Version:

Next-generation contract testing suite

44 lines (43 loc) 2.15 kB
"use strict"; // This module knows how to turn axios responses into // the relevant response objects or errors var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.unmarshallFailure = exports.unmarshallSuccess = void 0; const axios_1 = __importDefault(require("axios")); const apiErrors_1 = require("./apiErrors"); const unmarshallSuccess = (response) => response.data; exports.unmarshallSuccess = unmarshallSuccess; const unmarshallFailure = (error) => { if (axios_1.default.isAxiosError(error)) { if (error.response) { if (error.response.status === 403) { throw new apiErrors_1.BrokerError(`The access token you provided was rejected by the broker`, apiErrors_1.API_NOT_AUTHORISED); } if (error.response.data && error.response.data.errors) { let errorMessage; try { errorMessage = [ `The broker returned an error code (${error.response.status})`, ] .concat(Object.entries(error.response.data.errors) .map(([k, v]) => v.map((message) => `Error in field '${k}': ${message}`)) .flat()) .join('\n'); } catch { errorMessage = `The broker returned an error code (${error.response.status}), and failed to parse the error response`; } throw new apiErrors_1.BrokerError(errorMessage); } throw new apiErrors_1.BrokerError(`The broker returned an error code (${error.response.status}): ${JSON.stringify(error.response.data)}`, apiErrors_1.API_ERROR); } if (error.request) { throw new apiErrors_1.BrokerError(`The server didn't respond: ${error.message} `, apiErrors_1.API_NO_RESPONSE); } } throw new Error(`[API Failed] ${error.message}`); }; exports.unmarshallFailure = unmarshallFailure;