import { ITokenHandler, Tokens } from './ITokenHandler' import { Config } from '../config' import { CoError } from '../co-error' import { decode } from 'jsonwebtoken'; let TOKENS_KEY = 'tokens' export class FileTokenHandler implements ITokenHandler{ constructor () {} get(){ return Config.get() .get(TOKENS_KEY) .then(tokens => { if(tokens){ return tokens } throw new CoError('NOT_LOGGED_IN') }) } set(data: Tokens){ return Config.set({ ewizard: { gatewayHost: getGatewayUrl(data.access_token) }, [TOKENS_KEY]: filterData(data) }) } clear(){ return Config.reset([TOKENS_KEY]) } } function filterData(data: Tokens): Tokens{ return { access_token: data.access_token, refresh_token: data.refresh_token } } function getGatewayUrl(token: string): string { const data: any = decode(token); return data.apiUrl; }