/* * Copyright (C) Sapphirecode - All Rights Reserved * This file is part of Auth-Server-Helper which is released under MIT. * See file 'LICENSE' for full license details. * Created by Timo Hocker , August 2022 */ import { debug } from '../debug'; import { LabelledKey } from '../Key'; import { Redis } from '../Redis'; const logger = debug ('RedisKeyStore'); export class RedisKeyStore extends Redis { public async set (value: LabelledKey): Promise { const log = logger.extend ('set'); log ('trying to set key %s to redis', value.index); if (!this.is_active) { log ('redis is inactive, skipping'); return; } const valid_for = Math.floor ( (value.valid_until - (new Date) .getTime ()) / 1000 ); log ('key is valid for %d seconds', valid_for); await this.redis.setex ( `keystore_${value.index}`, valid_for, JSON.stringify (value) ); log ('saved key'); } public async get (index: string): Promise { const log = logger.extend ('get'); log ('trying to get key %s from redis', index); if (!this.is_active) { log ('redis is inactive, skipping'); return null; } const res = await this.redis.get (`keystore_${index}`); if (res === null) { log ('key not found in redis'); return null; } log ('key found'); return JSON.parse (res); } } export const redis_key_store = new RedisKeyStore;