"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* @file @todo 1. move to modules
* @file @todo 2. use date-fns to check last time like in e2e tests
*/
const exotic_1 = require("exotic");
const persistence_1 = require("@skava/persistence");
const config_1 = require("../bootstrapper/config");
const getSessionToken_1 = require("../deps/getSessionToken");
const isSuccessResponse = (response) => exotic_1.isObj(response) && [200, 204, 201, 202, 204].includes(response.status);
exports.isSuccessResponse = isSuccessResponse;
const getSessionTokenFromContext = (context) => {
const headerCookie = context.store.get('headers');
const sessionId = headerCookie.get('Cookie') || headerCookie.get('cookie');
if (sessionId) {
const sessionTokenValue = sessionId.split(`${config_1.cookieConfig.sessionIdNamespace}=`)[1];
const sessionToken = sessionTokenValue
? sessionTokenValue.split(';')[0]
: '';
return sessionToken;
}
else {
return '';
}
};
exports.getSessionTokenFromContext = getSessionTokenFromContext;
/**
* @todo need to check if it is expired same as I am doing in `__tests__/generator`
*/
const checkAndGetSessionId = (context) => {
const sessionId = getSessionTokenFromContext(context);
// session or guest
// put this way because oneStorage reading from file isn't the fastest
return sessionId ? sessionId : persistence_1.oneStorage.get(config_1.cookieConfig.sessionIdNamespace);
};
exports.checkAndGetSessionId = checkAndGetSessionId;
const isSessionExpired = (response) => {
return response && response.status === 401;
};
exports.isSessionExpired = isSessionExpired;
const getUnAuthResponse = async (response, sessionToken) => {
const errorLikeResponse = {
properties: {
state: {
status: 'error',
},
},
responseMessage: 'failure - session expired',
responseCode: response.status,
};
const guestSessionToken = persistence_1.oneStorage.get(config_1.cookieConfig.sessionIdNamespace);
if (sessionToken === guestSessionToken) {
await getSessionToken_1.getSessionToken();
}
return errorLikeResponse;
};
exports.getUnAuthResponse = getUnAuthResponse;
exports.default = checkAndGetSessionId;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tBUElSZXNwb25zZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZXBzL2NoZWNrQVBJUmVzcG9uc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7O0dBR0c7QUFDSCxtQ0FBK0M7QUFDL0Msb0RBQStDO0FBQy9DLG1EQUFxRDtBQUNyRCw2REFBeUQ7QUFRekQsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFFBQXFCLEVBQUUsRUFBRSxDQUNsRCxjQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQXdEdEUsOENBQWlCO0FBdERuQixNQUFNLDBCQUEwQixHQUFHLENBQUMsT0FBdUIsRUFBRSxFQUFFO0lBQzdELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ2pELE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUMxRSxJQUFJLFNBQVMsRUFBRTtRQUNiLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FDdkMsR0FBRyxxQkFBWSxDQUFDLGtCQUFrQixHQUFHLENBQ3RDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFSixNQUFNLFlBQVksR0FBRyxpQkFBaUI7WUFDcEMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUVOLE9BQU8sWUFBWSxDQUFBO0tBQ3BCO1NBQU07UUFDTCxPQUFPLEVBQUUsQ0FBQTtLQUNWO0FBQ0gsQ0FBQyxDQUFBO0FBMENDLGdFQUEwQjtBQXhDNUI7O0dBRUc7QUFDSCxNQUFNLG9CQUFvQixHQUFHLENBQUMsT0FBdUIsRUFBVSxFQUFFO0lBQy9ELE1BQU0sU0FBUyxHQUFHLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3JELG1CQUFtQjtJQUNuQixzRUFBc0U7SUFDdEUsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsd0JBQVUsQ0FBQyxHQUFHLENBQUMscUJBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO0FBQ2hGLENBQUMsQ0FBQTtBQTZCQyxvREFBb0I7QUEzQnRCLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxRQUFrQixFQUFFLEVBQUU7SUFDOUMsT0FBTyxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUE7QUFDNUMsQ0FBQyxDQUFBO0FBMEJDLDRDQUFnQjtBQXhCbEIsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLEVBQUUsUUFBa0IsRUFBRSxZQUFvQixFQUFFLEVBQUU7SUFDM0UsTUFBTSxpQkFBaUIsR0FBRztRQUN4QixVQUFVLEVBQUU7WUFDVixLQUFLLEVBQUU7Z0JBQ0wsTUFBTSxFQUFFLE9BQU87YUFDaEI7U0FDRjtRQUNELGVBQWUsRUFBRSwyQkFBMkI7UUFDNUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxNQUFNO0tBQzlCLENBQUE7SUFFRCxNQUFNLGlCQUFpQixHQUFXLHdCQUFVLENBQUMsR0FBRyxDQUM5QyxxQkFBWSxDQUFDLGtCQUFrQixDQUNoQyxDQUFBO0lBQ0QsSUFBSSxZQUFZLEtBQUssaUJBQWlCLEVBQUU7UUFDdEMsTUFBTSxpQ0FBZSxFQUFFLENBQUE7S0FDeEI7SUFFRCxPQUFPLGlCQUFpQixDQUFBO0FBQzFCLENBQUMsQ0FBQTtBQU1DLDhDQUFpQjtBQUduQixrQkFBZSxvQkFBb0IsQ0FBQSJ9