azurite
Version:
An open source Azure Storage API compatible server
41 lines • 1.93 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const operation_1 = tslib_1.__importDefault(require("../artifacts/operation"));
const specifications_1 = tslib_1.__importDefault(require("../artifacts/specifications"));
const DeserializationError_1 = tslib_1.__importDefault(require("../errors/DeserializationError"));
const OperationMismatchError_1 = tslib_1.__importDefault(require("../errors/OperationMismatchError"));
const serializer_1 = require("../utils/serializer");
/**
* Deserializer Middleware. Deserialize incoming HTTP request into models.
*
* @export
* @param {Context} context
* @param {IRequest} req An IRequest object
* @param {NextFunction} next An next callback or promise
* @param {ILogger} logger A valid logger
* @returns {void}
*/
function deserializerMiddleware(context, req, next, logger) {
logger.verbose(`DeserializerMiddleware: Start deserializing...`, context.contextID);
if (context.operation === undefined) {
const handlerError = new OperationMismatchError_1.default();
logger.error(`DeserializerMiddleware: ${handlerError.message}`, context.contextID);
return next(handlerError);
}
if (specifications_1.default[context.operation] === undefined) {
logger.warn(`DeserializerMiddleware: Cannot find deserializer for operation ${operation_1.default[context.operation]}`);
}
(0, serializer_1.deserialize)(context, req, specifications_1.default[context.operation], logger)
.then(parameters => {
context.handlerParameters = parameters;
})
.then(next)
.catch(err => {
const deserializationError = new DeserializationError_1.default(err.message);
deserializationError.stack = err.stack;
next(deserializationError);
});
}
exports.default = deserializerMiddleware;
//# sourceMappingURL=deserializer.middleware.js.map
;