@bitblit/ratchet-aws
Version:
Common tools for use with AWS browser and node
35 lines • 1.47 kB
JavaScript
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