UNPKG

@sitecore/sc-contenthub-webclient-sdk

Version:

Sitecore Content Hub WebClient SDK.

129 lines 5.92 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ResponseHandler = void 0; const http_status_codes_1 = require("http-status-codes"); const argument_error_1 = require("../errors/argument-error"); const forbidden_error_1 = require("../errors/forbidden-error"); const not_found_error_1 = require("../errors/not-found-error"); const validation_error_1 = require("../errors/validation-error"); const validation_failure_1 = require("../errors/validation-failure"); const web_api_error_1 = require("../errors/web-api-error"); const guard_1 = __importDefault(require("../guard")); class ResponseHandler { /** * Inspects the response message's success status. * * @remarks * Throws errors when response message is not successful. * * @param responseMessage - The response message */ static handleErrors(responseMessage) { guard_1.default.notNullOrUndefined(responseMessage); if (responseMessage.isSuccessStatusCode) { return; } if (responseMessage.statusCode === http_status_codes_1.StatusCodes.BAD_REQUEST) { ResponseHandler.handleBadRequest(responseMessage); } else { ResponseHandler.handleGenericError(responseMessage); } } /** * Handle validation errors related to a malformed or in another way invalid request payload send to server. * * @remarks * This method always throws an exception. * * @param responseMessage - The response message */ static handleBadRequest(responseMessage) { guard_1.default.notNullOrUndefined(responseMessage); if (responseMessage.isSuccessStatusCode) { throw new argument_error_1.ArgumentError(`Can not process successful request (code: ${responseMessage.statusCode}).`); } if (responseMessage.statusCode !== http_status_codes_1.StatusCodes.BAD_REQUEST) { throw new argument_error_1.ArgumentError(`Can not process failed request with status code '${responseMessage.statusCode}'.`); } /* istanbul ignore if */ if (responseMessage.content != null) { let json; if (typeof responseMessage.content === "string") { try { json = JSON.parse(responseMessage.content); } catch (ex) { throw new validation_error_1.ValidationError(responseMessage.content); } } else { json = responseMessage.content; } throw new validation_error_1.ValidationError("One or more validation errors were detected.", ...Object.keys(json).map(propertyName => new validation_failure_1.ValidationFailure(json[propertyName], propertyName))); } else { throw new validation_error_1.ValidationError("An unspecified error occurred."); } } /** * Handle generic errors. * * @remarks * This method always throws an exception. * * @param responseMessage - The response message */ static handleGenericError(responseMessage) { var _a; guard_1.default.notNullOrUndefined(responseMessage); if (responseMessage.isSuccessStatusCode) { throw new argument_error_1.ArgumentError(`Can not process successful request (code: ${responseMessage.statusCode}).`); } let message = null; /* istanbul ignore if */ if (responseMessage.content != null) { let json; try { if (typeof responseMessage.content === "string") { try { json = JSON.parse(responseMessage.content); } catch (ex) { throw new validation_error_1.ValidationError(responseMessage.content); } } else { json = responseMessage.content; } message = (_a = json["ExceptionMessage"]) !== null && _a !== void 0 ? _a : json["Message"]; } catch (ex) { } } message = message !== null && message !== void 0 ? message : responseMessage.content; if (responseMessage.statusCode === http_status_codes_1.StatusCodes.FORBIDDEN) { throw new forbidden_error_1.ForbiddenError(message !== null && message !== void 0 ? message : "Insufficient privileges or resource in use."); } else if (responseMessage.statusCode === http_status_codes_1.StatusCodes.NOT_FOUND) { throw new not_found_error_1.NotFoundError(message && message.length > 0 ? message : "Resource can not be found.", responseMessage); } else { if (message != null) { message = `An error has occurred (${responseMessage.statusCode}${responseMessage.statusText != null ? ` - ${responseMessage.statusText}` : ""}).\n` + `Message: ${message}`; } else if (responseMessage.statusCode === http_status_codes_1.StatusCodes.CONFLICT) { message = `Conflict in the parameter value or name (${responseMessage.statusCode}${responseMessage.statusText != null ? ` - ${responseMessage.statusText}` : ""})`; } else { message = `An error has occurred without further information (${responseMessage.statusCode}${responseMessage.statusText != null ? ` - ${responseMessage.statusText}` : ""})`; } throw new web_api_error_1.WebApiError(message, responseMessage.statusCode, responseMessage); } } } exports.ResponseHandler = ResponseHandler; //# sourceMappingURL=response-handler.js.map