fix redis sync
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
Timo Hocker 2022-08-10 16:17:00 +02:00
parent 7bb6dac737
commit b43190d048
No known key found for this signature in database
GPG Key ID: 3B86485AC71C835C
2 changed files with 45 additions and 44 deletions

View File

@ -6,81 +6,82 @@
*/ */
import IORedis from 'ioredis'; import IORedis from 'ioredis';
import { debug } from './debug'; import {debug} from './debug';
import { LabelledKey } from './Key'; import {LabelledKey} from './Key';
const logger = debug ('redis'); const logger = debug('redis');
export class Redis { export class Redis {
private _redis: IORedis | null = null; private _redis: IORedis | null = null;
public connect (url: string): void { public connect(url: string): void {
const log = logger.extend ('connect'); const log = logger.extend('connect');
log ('connecting to redis instance %s', url); log('connecting to redis instance %s', url);
if (this._redis !== null) { if (this._redis !== null) {
log ('disconnecting existing redis client'); log('disconnecting existing redis client');
this.disconnect (); this.disconnect();
} }
this._redis = new IORedis (url); this._redis = new IORedis(url);
this._redis.on ('connect', () => { this._redis.on('connect', () => {
log ('connected'); log('connected');
}); });
this._redis.on ('ready', () => { this._redis.on('ready', () => {
log ('ready'); log('ready');
}); });
this._redis.on ('error', (err) => { this._redis.on('error', (err) => {
log ('error %o', err); log('error %o', err);
}); });
this._redis.on ('reconnecting', () => { this._redis.on('reconnecting', () => {
log ('reconnecting'); log('reconnecting');
}); });
this._redis.on ('end', () => { this._redis.on('end', () => {
log ('connection ended'); log('connection ended');
}); });
} }
public disconnect (): void { public disconnect(): void {
const log = logger.extend ('disconnect'); const log = logger.extend('disconnect');
log ('disconnecting redis client'); log('disconnecting redis client');
if (this._redis === null) { if (this._redis === null) {
log ('redis is inactive, skipping'); log('redis is inactive, skipping');
return; return;
} }
this._redis.quit (); this._redis.quit();
this._redis = null; this._redis = null;
log ('done'); log('done');
} }
public async set_key (key: LabelledKey): Promise<void> { public async set_key(key: LabelledKey): Promise<void> {
const log = logger.extend ('set_key'); const log = logger.extend('set_key');
log ('trying to set key %s to redis', key.index); log('trying to set key %s to redis', key.index);
if (this._redis === null) { if (this._redis === null) {
log ('redis is inactive, skipping'); log('redis is inactive, skipping');
return; return;
} }
const valid_for = (key.valid_until - (new Date) const valid_for = Math.floor(
.getTime ()) / 1000; (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('key is valid for %d seconds', valid_for);
log ('saved key'); await this._redis.setex(key.index, valid_for, JSON.stringify(key));
log('saved key');
} }
public async get_key (index: string): Promise<LabelledKey | null> { public async get_key(index: string): Promise<LabelledKey | null> {
const log = logger.extend ('get_key'); const log = logger.extend('get_key');
log ('trying to get key %s from redis', index); log('trying to get key %s from redis', index);
if (this._redis === null) { if (this._redis === null) {
log ('redis is inactive, skipping'); log('redis is inactive, skipping');
return null; return null;
} }
const res = await this._redis.get (index); const res = await this._redis.get(index);
if (res === null) { if (res === null) {
log ('key not found in redis'); log('key not found in redis');
return null; return null;
} }
log ('key found'); log('key found');
return JSON.parse (res); return JSON.parse(res);
} }
} }
export const redis = new Redis; export const redis = new Redis();

View File

@ -1,6 +1,6 @@
{ {
"name": "@sapphirecode/auth-server-helper", "name": "@sapphirecode/auth-server-helper",
"version": "3.3.2", "version": "3.3.3",
"main": "dist/lib/index.js", "main": "dist/lib/index.js",
"author": { "author": {
"name": "Timo Hocker", "name": "Timo Hocker",