diff --git a/lib/Redis.ts b/lib/Redis.ts index d36cc2e..648b850 100644 --- a/lib/Redis.ts +++ b/lib/Redis.ts @@ -11,6 +11,9 @@ import { LabelledKey } from './Key'; const logger = debug ('redis'); +export type SyncClass = 'blacklist' | 'keystore' +export type SyncValue = LabelledKey | string; + export class Redis { private _redis: IORedis | null = null; @@ -52,20 +55,31 @@ export class Redis { log ('done'); } - public async set_key (key: LabelledKey): Promise { - const log = logger.extend ('set_key'); - log ('trying to set key %s to redis', key.index); + public async set ( + sync_class: SyncClass, + key: string, + value: SyncValue + ): Promise { + const log = logger.extend ('set'); + log ('trying to set %s value %s to redis', sync_class, key); if (this._redis === null) { log ('redis is inactive, skipping'); return; } - const valid_for = Math.floor ( - (key.valid_until - (new Date) - .getTime ()) / 1000 - ); - log ('key is valid for %d seconds', valid_for); - await this._redis.setex (key.index, valid_for, JSON.stringify (key)); - log ('saved key'); + let valid_for = null; + if (sync_class === 'keystore') { + valid_for = Math.floor ( + (key.valid_until - (new Date) + .getTime ()) / 1000 + ); + log ('key is valid for %d seconds', valid_for); + } + if (valid_for === null) + await this._redis.set (key, JSON.stringify (value)); + else + await this._redis.setex (key, valid_for, JSON.stringify (value)); + + log ('saved value'); } public async get_key (index: string): Promise {