@obelisk/client
Version:
Typescript client to interact with Obelisk on a higher level than the regular ReST API calls.
56 lines (55 loc) • 1.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Token = void 0;
class Token {
/**
* Create a Token instance.
* @param token
*/
constructor(token) {
this.token = token;
this.parsedToken = this.decodeToken(token);
this.expires_at = this.parsedToken.exp;
}
/**
* Returnt the raw token as a hex string.
*/
getToken() {
return this.token;
}
/**
* Returns the parsed token as a JSON object.
*/
getParsedToken() {
return this.parsedToken;
}
/**
* Returns the expiration date in milliseconds.
*/
getExpiresAt() {
return this.expires_at;
}
decodeToken(token) {
token = token.split('.')[1];
token = token.replace('/-/g', '+');
token = token.replace('/_/g', '/');
switch (token.length % 4) {
case 0:
break;
case 2:
token += '==';
break;
case 3:
token += '=';
break;
default:
throw 'Invalid token';
}
token = (token + '===').slice(0, token.length + (token.length % 4));
token = token.replace(/-/g, '+').replace(/_/g, '/');
token = decodeURIComponent(escape(atob(token)));
token = JSON.parse(token);
return token;
}
}
exports.Token = Token;