From c301789aed6dfd2894a1495cb7011e02ff04a58f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Fra=C3=9F?= Date: Wed, 2 Apr 2025 21:01:11 +0000 Subject: [PATCH] [task-193] [int] --- source/services/invite.ts | 42 +++++++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/source/services/invite.ts b/source/services/invite.ts index 625e50c..6557ef3 100644 --- a/source/services/invite.ts +++ b/source/services/invite.ts @@ -59,7 +59,7 @@ namespace _espe.service.invite + "/" + - Math.floor(lib_plankton.base.get_current_timestamp()).toFixed(0) + lib_plankton.base.get_current_timestamp(true).toFixed(0) ), "secret" ); @@ -68,7 +68,7 @@ namespace _espe.service.invite "expiry": ( ((expiry !== null) && (expiry < 0)) ? - (Math.floor(lib_plankton.base.get_current_timestamp()) + default_lifetime) + (lib_plankton.base.get_current_timestamp(true) + default_lifetime) : expiry ), @@ -90,15 +90,45 @@ namespace _espe.service.invite /** - * @todo heed expiry + */ + function get( + key : _espe.type.invite_key + ) : Promise<_espe.type.invite_object> + { + return ( + _espe.repository.invite.identify(key) + .then( + (id) => _espe.repository.invite.read(id) + ) + ); + } + + + /** */ export async function examine( key : _espe.type.invite_key ) : Promise<_espe.type.invite_object> { - const invite_id : _espe.type.invite_id = await _espe.repository.invite.identify(key); - const invite_object : _espe.type.invite_object = await _espe.repository.invite.read(invite_id); - return invite_object; + let invite_object : (null | _espe.type.invite_object); + try { + invite_object = await get(key) + } + catch (error) { + invite_object = null; + } + if (invite_object === null) { + return Promise.reject(new Error("not found")) + } + else { + const now : int = lib_plankton.base.get_current_timestamp(true); + if ((invite_object.expiry !== null) && (invite_object.expiry >= now)) { + return Promise.reject(new Error("expired")); + } + else { + return Promise.resolve(invite_object); + } + } }