import decodeJwt from 'jwt-decode'
import get from 'lodash/get'
import { toCamelCaseDeep } from '../utils/case_converter'
/**
* User's token.
*/
export class Token {
/**
* Parse token from a JWT token.
*
* @param {string} jwtToken JWT token.
*/
constructor (jwtToken) {
this._token = jwtToken
this._payload = toCamelCaseDeep(decodeJwt(jwtToken))
}
/**
* Encoded JWT token.
*
* @type {string}
*/
get rawJWT () {
return this._token
}
/**
* User's account ID.
*
* @type {string}
*/
get accountId () {
return get(this._payload, 'accountId')
}
/**
* User's account type.
*
* @type {string}
*/
get accountType () {
return get(this._payload, 'accountType')
}
/**
* User's platform ID.
*
* @type {string}
*/
get platformId () {
return get(this._payload, 'platformId')
}
/**
* Token payload.
*
* @type {string}
*/
get payload () {
return this._payload
}
}