@multiversx/sdk-nestjs-http
Version:
Multiversx SDK Nestjs http package
41 lines • 1.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OriginInterceptor = void 0;
const tslib_1 = require("tslib");
const common_1 = require("@nestjs/common");
const rxjs_1 = require("rxjs");
const operators_1 = require("rxjs/operators");
const sdk_nestjs_common_1 = require("@multiversx/sdk-nestjs-common");
const crypto_1 = require("crypto");
let OriginInterceptor = class OriginInterceptor {
intercept(context, next) {
var _a;
const contextType = context.getType();
if (!["http", "https"].includes(contextType)) {
return next.handle();
}
const apiFunction = context.getClass().name + '.' + context.getHandler().name;
const request = context.switchToHttp().getRequest();
const requestId = (_a = request.headers['x-request-id']) !== null && _a !== void 0 ? _a : (0, crypto_1.randomUUID)();
sdk_nestjs_common_1.ContextTracker.assign({ origin: apiFunction, requestId });
return next
.handle()
.pipe((0, operators_1.tap)(() => {
sdk_nestjs_common_1.ContextTracker.unassign();
if (!request.res.headersSent) {
request.res.set('X-Request-Id', requestId);
}
}), (0, operators_1.catchError)(err => {
sdk_nestjs_common_1.ContextTracker.unassign();
if (!request.res.headersSent) {
request.res.set('X-Request-Id', requestId);
}
return (0, rxjs_1.throwError)(() => err);
}));
}
};
OriginInterceptor = tslib_1.__decorate([
(0, common_1.Injectable)()
], OriginInterceptor);
exports.OriginInterceptor = OriginInterceptor;
//# sourceMappingURL=origin.interceptor.js.map