UNPKG

@bitblit/ratchet-aws

Version:

Common tools for use with AWS browser and node

35 lines 1.47 kB
import { RequireRatchet } from '@bitblit/ratchet-common/lang/require-ratchet'; import { StringRatchet } from '@bitblit/ratchet-common/lang/string-ratchet'; export class ExpiringCodeRatchet { provider; constructor(provider) { this.provider = provider; } static generateCode(params) { RequireRatchet.notNullOrUndefined(params, 'params'); RequireRatchet.notNullOrUndefined(params.context, 'params.context'); RequireRatchet.notNullOrUndefined(params.length, 'params.length'); RequireRatchet.notNullOrUndefined(params.alphabet, 'params.alphabet'); let code = ''; while (code.length < params.length) { code += params.alphabet.charAt(Math.floor(params.alphabet.length * Math.random())); } const rval = { code: code, context: params.context, tags: params.tags, expiresEpochMS: Date.now() + params.timeToLiveSeconds * 1000, }; return rval; } async createNewCode(params) { const value = ExpiringCodeRatchet.generateCode(params); const rval = await this.provider.storeCode(value); return rval ? value : null; } async checkCode(code, context, deleteOnMatch) { const rval = await this.provider.checkCode(StringRatchet.trimToEmpty(code), StringRatchet.trimToEmpty(context), deleteOnMatch); return rval; } } //# sourceMappingURL=expiring-code-ratchet.js.map