@contrail/flexplm 1.7.7-alpha.01fb300 → 1.7.7-alpha.1ad98c2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FlexPLMConnect = void 0;
|
|
4
4
|
const app_framework_1 = require("@contrail/app-framework");
|
|
5
|
-
// Module-level on purpose: a new FlexPLMConnect is constructed for every event. Declaring for Session
|
|
5
|
+
// Module-level on purpose: a new FlexPLMConnect is constructed for every event. Declaring for Session resuing use case.
|
|
6
6
|
const sessionCache = new Map();
|
|
7
7
|
// Added for Session reuse - ET-390 - Ends
|
|
8
8
|
class FlexPLMConnect {
|
|
@@ -41,6 +41,7 @@ class FlexPLMConnect {
|
|
|
41
41
|
const cfg = this.config ?? {};
|
|
42
42
|
const sessReuseEntries = (name) => cfg[`flexplmConnect.sessionReuse.${name}`];
|
|
43
43
|
const enabled = sessReuseEntries('enabled');
|
|
44
|
+
console.info('sessionReuse.enabled value is --> ' + enabled);
|
|
44
45
|
return {
|
|
45
46
|
enabled: enabled === true || String(enabled).toLowerCase() === 'true',
|
|
46
47
|
ttlMs: (sessReuseEntries('ttlSeconds') ?? 900) * 1000,
|
|
@@ -62,10 +63,12 @@ class FlexPLMConnect {
|
|
|
62
63
|
sessionCache.delete(key);
|
|
63
64
|
return undefined;
|
|
64
65
|
}
|
|
66
|
+
console.info('cachedSessValue.cookie: ' + cachedSessValue.cookie);
|
|
65
67
|
return cachedSessValue.cookie;
|
|
66
68
|
}
|
|
67
69
|
storeSession(cookie) {
|
|
68
70
|
// sliding expiry: Windchill's session timeout is also sliding
|
|
71
|
+
console.info('cookie: ' + cookie);
|
|
69
72
|
sessionCache.set(this.getSessionKey(), { cookie, expiresAt: Date.now() + this.sessionOptions.ttlMs });
|
|
70
73
|
}
|
|
71
74
|
clearSession() {
|
|
@@ -74,6 +77,7 @@ class FlexPLMConnect {
|
|
|
74
77
|
/** Returns the session cookie value Windchill issued on this response, if any (last one wins). */
|
|
75
78
|
extractSessionCookie(response) {
|
|
76
79
|
const respHeader = response?.headers;
|
|
80
|
+
console.info('respHeader: ' + respHeader);
|
|
77
81
|
if (!respHeader)
|
|
78
82
|
return undefined;
|
|
79
83
|
let raw = [];
|
|
@@ -93,6 +97,7 @@ class FlexPLMConnect {
|
|
|
93
97
|
cookieNameMatcher = regexFilter.exec(line);
|
|
94
98
|
}
|
|
95
99
|
}
|
|
100
|
+
console.info('jSession: ' + jSession);
|
|
96
101
|
return jSession;
|
|
97
102
|
}
|
|
98
103
|
cookieHeader(sessionCookie) {
|
|
@@ -119,6 +124,7 @@ class FlexPLMConnect {
|
|
|
119
124
|
}
|
|
120
125
|
// Added for Session reuse - ET-390 - Starts
|
|
121
126
|
const cookie = this.cookieHeader(sessionCookie);
|
|
127
|
+
console.info('sessionReuse--cookie --> ' + cookie);
|
|
122
128
|
if (cookie) {
|
|
123
129
|
csrfOptions.headers['Cookie'] = cookie;
|
|
124
130
|
}
|
|
@@ -132,6 +138,7 @@ class FlexPLMConnect {
|
|
|
132
138
|
// Added for Session reuse - ET-390 - Ends
|
|
133
139
|
console.info('csrfOptions: ' + JSON.stringify(logOptions));
|
|
134
140
|
}
|
|
141
|
+
console.info('csrfOptions --> ' + csrfOptions);
|
|
135
142
|
return csrfOptions;
|
|
136
143
|
}
|
|
137
144
|
/////////////////////////////////////////////////////////////////////////////
|
|
@@ -152,6 +159,7 @@ class FlexPLMConnect {
|
|
|
152
159
|
const csrfOptions = this.getRequestOptions('GET', sentCookie);
|
|
153
160
|
// Added for Session reuse - ET-390 - Ends
|
|
154
161
|
let response = await fetch(csrfURL, csrfOptions);
|
|
162
|
+
console.info('response.status: ' + response.status);
|
|
155
163
|
// Added for Session reuse - ET-390 - Starts
|
|
156
164
|
// if the response status is 401 or 403, then get a new session id
|
|
157
165
|
if (sentCookie && this.sessionOptions.retryStatuses.includes(response.status)) {
|
|
@@ -182,7 +190,9 @@ class FlexPLMConnect {
|
|
|
182
190
|
const body = await response.json();
|
|
183
191
|
const nonce_key = body.items[0].attributes.nonce_key;
|
|
184
192
|
const nonce = body.items[0].attributes.nonce;
|
|
185
|
-
|
|
193
|
+
console.info('nonce_key: ' + nonce_key);
|
|
194
|
+
console.info('sessionCookie: ' + sessionCookie);
|
|
195
|
+
//ET-390 - adding sessionCookie to the return
|
|
186
196
|
return {
|
|
187
197
|
nonce_key,
|
|
188
198
|
nonce,
|
|
@@ -311,6 +321,8 @@ class FlexPLMConnect {
|
|
|
311
321
|
this.storeSession(cachedCookie);
|
|
312
322
|
}
|
|
313
323
|
// Added for Session reuse - ET-390 - Ends
|
|
324
|
+
console.info('if loop entry 1: ' + this.sessionOptions.retryStatuses.includes(response.status));
|
|
325
|
+
console.info('response.status1: ' + response.status);
|
|
314
326
|
if (response.status >= 300) {
|
|
315
327
|
const message = 'Error connecting to FlexPLM:status: ' + response.status;
|
|
316
328
|
console.error(message);
|
|
@@ -39,12 +39,7 @@ const resp = (status, setCookie = [], json = csrfBody) => ({
|
|
|
39
39
|
});
|
|
40
40
|
let userCounter = 0;
|
|
41
41
|
const uniqueUser = () => 'sess-user-' + (++userCounter);
|
|
42
|
-
|
|
43
|
-
const sessionConfig = (user, sessionReuse = { enabled: true }) => {
|
|
44
|
-
const flat = {};
|
|
45
|
-
Object.entries(sessionReuse).forEach(([k, v]) => { flat[`flexplmConnect.sessionReuse.${k}`] = v; });
|
|
46
|
-
return createConfig({ userName: () => user, ...flat });
|
|
47
|
-
};
|
|
42
|
+
const sessionConfig = (user, sessionReuse = { enabled: true }) => createConfig({ userName: () => user, flexplmConnect: { sessionReuse } });
|
|
48
43
|
const fetchMock = () => global.fetch;
|
|
49
44
|
const callHeaders = (i) => fetchMock().mock.calls[i][1].headers;
|
|
50
45
|
const callMethod = (i) => fetchMock().mock.calls[i][1].method;
|