azurite
Version:
An open source Azure Storage API compatible server
66 lines • 3.01 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const constants_1 = require("../../table/utils/constants");
const MiddlewareError_1 = tslib_1.__importDefault(require("../generated/errors/MiddlewareError"));
const xml_1 = require("../generated/utils/xml");
const utils_1 = require("../utils/utils");
/**
* Represents an Azure Storage Server Error.
*
* @export
* @class StorageError
* @extends {MiddlewareError}
*/
class StorageError extends MiddlewareError_1.default {
/**
* Creates an instance of StorageError.
*
* @param {number} statusCode HTTP response status code
* @param {string} storageErrorCode Azure Storage error code, will be in response body and header
* @param {string} storageErrorMessage Azure Storage error message
* @param {string} storageRequestID Azure Storage server request ID
* @param {{ [key: string]: string }} [storageAdditionalErrorMessages={}]
* Additional error messages will be included in XML body
* @param [Context] context
* @memberof StorageError
*/
constructor(statusCode, storageErrorCode, storageErrorMessage, storageRequestID, storageAdditionalErrorMessages = {}, context) {
const payload = (0, utils_1.getPayloadFormat)(context);
const isJSON = payload === constants_1.NO_METADATA_ACCEPT ||
payload === constants_1.MINIMAL_METADATA_ACCEPT ||
payload === constants_1.FULL_METADATA_ACCEPT;
const bodyInJSON = isJSON
? {
code: storageErrorCode,
message: {
lang: "en-US",
value: `${storageErrorMessage}\nRequestId:${storageRequestID}\nTime:${new Date().toISOString()}`
}
}
: {
Code: storageErrorCode,
Message: `${storageErrorMessage}\nRequestId:${storageRequestID}\nTime:${new Date().toISOString()}`
};
for (const key in storageAdditionalErrorMessages) {
if (storageAdditionalErrorMessages.hasOwnProperty(key)) {
const element = storageAdditionalErrorMessages[key];
bodyInJSON[key] = element;
}
}
const body = isJSON
? JSON.stringify({ "odata.error": bodyInJSON })
: (0, xml_1.jsonToXML)({ Error: bodyInJSON });
super(statusCode, storageErrorMessage, undefined, {
"x-ms-error-code": storageErrorCode,
"x-ms-request-id": storageRequestID,
"x-ms-version": constants_1.TABLE_API_VERSION
}, body, isJSON ? `${payload};streaming=true;charset=utf-8` : "application/xml");
this.name = "StorageError";
this.storageErrorCode = storageErrorCode;
this.storageErrorMessage = storageErrorMessage;
this.storageRequestID = storageRequestID;
}
}
exports.default = StorageError;
//# sourceMappingURL=StorageError.js.map
;