1 | 'use strict';
|
2 |
|
3 | const domain = require('domain');
|
4 | const { constructFromEncodedString } = require('@codefresh-io/authenticated-entity');
|
5 | const { registerCorrelation } = require('./correlation');
|
6 | const { REQUEST_ID_HEADER, AUTHENTICATED_ENTITY_HEADER } = require('./headers');
|
7 |
|
8 | module.exports = {
|
9 | newDomainMiddleware() {
|
10 | return (res, req, next) => {
|
11 | const dom = domain.create();
|
12 |
|
13 | const requestId = res.headers[REQUEST_ID_HEADER.toLowerCase()];
|
14 | const rawAuthenticatedEntity = res.headers[AUTHENTICATED_ENTITY_HEADER.toLowerCase()];
|
15 |
|
16 | let authenticatedEntity = null;
|
17 | if (rawAuthenticatedEntity) {
|
18 | authenticatedEntity = constructFromEncodedString(rawAuthenticatedEntity);
|
19 | }
|
20 |
|
21 | dom.add(req);
|
22 | dom.add(res);
|
23 |
|
24 | dom.run(() => {
|
25 | try {
|
26 | registerCorrelation(authenticatedEntity, requestId);
|
27 | setImmediate(next);
|
28 | } catch (err) {
|
29 | setImmediate(next, err);
|
30 | }
|
31 | });
|
32 | };
|
33 | }
|
34 | };
|