UNPKG

@caidrive/shared

Version:

caidrive.shared.components

214 lines (213 loc) 7.31 kB
"use strict"; /** * What it does. * * @param name - Parameter description. * @returns Type and description of the returned object. * * @example * ``` * Write me later. * ``` */ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.SessionService = void 0; const redis_1 = require("redis"); const core_1 = require("../../core"); const infra_1 = require("../../infra"); class SessionService extends infra_1.RedisClient { /** * */ constructor(client) { super(client); this.client = client; /** * */ this.salt = "cai.sessions"; } /** * * */ getSessionId(refreshToken) { return __awaiter(this, void 0, void 0, function* () { /** * */ try { const connected = yield this.connect(); if (connected.isFailure) { /** * */ return core_1.Result.fail(`Can not to connect to session management`); } const keys = yield this.getAllKeys(`*${refreshToken}*`); if (keys.isFailure) { /** * */ return core_1.Result.fail(`Error occurred during retrieval of session via refreshToken`); } if (keys.value.length === 0) { /** * */ return core_1.Result.fail("Not found"); } return core_1.Result.ok(keys.value[0]); } catch (error) { console.error(error); return core_1.Result.fail(`Error occurred during retrieval of session via refreshToken`); } }); } /** * * */ getSession(refreshToken) { return __awaiter(this, void 0, void 0, function* () { /** * */ try { const connected = yield this.connect(); if (connected.isFailure) { /** * */ return core_1.Result.fail(`Can not to connect to session management`); } const keys = yield this.getAllKeys(`*${refreshToken}*`); if (keys.isFailure) { /** * */ return core_1.Result.fail(`Error occurred during retrieval of session via refreshToken`); } if (keys.value.length === 0) { /** * */ return core_1.Result.fail("Not found"); } const token = yield this.getOne(keys.value[0]); if (token.isFailure) { return core_1.Result.fail(`Error occurred during retrieval of session via refreshToken`); } return core_1.Result.ok(token.value); } catch (error) { console.error(error); return core_1.Result.fail(`Error occurred during retrieval of session via refreshToken`); } }); } /*** * */ getAllSessions(criteria) { return __awaiter(this, void 0, void 0, function* () { try { /** * */ const connected = yield this.connect(); console.debug("connected", connected); if (connected.isFailure) { /** * */ return core_1.Result.fail(`Can not to connect to session management`); } const keys = yield this.getAllKeys(`*${this.salt}.${criteria}`); if (keys.isFailure) { return core_1.Result.fail(`Error occurred during retrieval of all sessions for criteria ${criteria}`); } const tokens = yield Promise.all(keys.value.map((key) => __awaiter(this, void 0, void 0, function* () { /** */ const token = yield this.getOne(key); if (token.isSuccess) { return token.value; } }))); return core_1.Result.ok(tokens.flatMap((token) => (token ? [token] : []))); } catch (error) { console.log("error", error); return core_1.Result.fail(`Error occurred during retrieval of all sessions for criteria ${criteria}`); } }); } /** * */ clearAllSessions(id) { return __awaiter(this, void 0, void 0, function* () { /** * */ try { const connected = yield this.connect(); if (connected.isFailure) { /** * */ return core_1.Result.fail(`Can not to connect to session management`); } const entries = yield this.getAllKeys(`*${this.salt}.${id}`); if (entries.isFailure) { return core_1.Result.fail(`Error occurred during creation of Redis client ${entries.error.toString()}`); } yield Promise.all(entries.value.map((key) => this.deleteOne(key))); return core_1.Result.ok(); } catch (error) { /** * */ return core_1.Result.fail(`Error occurred during creation of Redis client ${error === null || error === void 0 ? void 0 : error.message}`); } }); } /** * */ /** * */ static create(opts) { /** */ try { /** * */ const client = (0, redis_1.createClient)({ password: opts.password, socket: { host: opts.host, port: 6379 }, }); return core_1.Result.ok(new SessionService(client)); } catch (error) { /** */ return core_1.Result.fail(`Error occurred during creation of Redis client ${error === null || error === void 0 ? void 0 : error.message}`); } } } exports.SessionService = SessionService;