UNPKG

@telstra/core

Version:
120 lines (119 loc) 3.85 kB
import { Constants } from '../../constants/index.js'; import { InvalidAuthCredentialsError, InvalidTokenRetryCountError, MissingTokenDataError } from '../../errors/index.js'; import { storage } from '../../utils/storage/index.js'; /** * @class ConfigurationService * @description Configuration service to manage the configuration data. Everything to do with the configuration data is managed here. * Including authentication credentials, authentication token, and authentication token retry count. * @implements {IConfigurationService} * @exports ConfigurationService * */ export class ConfigurationService { _storage = storage.get(); async setAuthCredentials(authCredentials) { try { if (!authCredentials) { throw new InvalidAuthCredentialsError(); } await this._storage.set({ bucket: Constants.BUCKET_AUTH_STORE, key: Constants.BUCKET_KEY_CLIENT_CREDENTIALS, data: JSON.stringify(authCredentials), }); return true; } catch (error) { return false; } } async getAuthCredentials() { try { const data = (await this._storage.get({ bucket: Constants.BUCKET_AUTH_STORE, key: Constants.BUCKET_KEY_CLIENT_CREDENTIALS, })); if (!data) { return null; } return JSON.parse(data); } catch (error) { return null; } } async setAuthTokenData(authTokenData) { try { if (!authTokenData?.access_token || !authTokenData?.expires_at) { throw new MissingTokenDataError(); } await this._storage.set({ bucket: Constants.BUCKET_AUTH_STORE, key: Constants.BUCKET_KEY_ACCESS_TOKEN, data: authTokenData.access_token, }); await this._storage.set({ bucket: Constants.BUCKET_AUTH_STORE, key: Constants.BUCKET_KEY_TOKEN_EXPIRY, data: authTokenData.expires_at.getTime(), }); return true; } catch (error) { return false; } } async getAuthTokenData() { try { const access_token = (await this._storage.get({ bucket: Constants.BUCKET_AUTH_STORE, key: Constants.BUCKET_KEY_ACCESS_TOKEN, })); const expires_at = (await this._storage.get({ bucket: Constants.BUCKET_AUTH_STORE, key: Constants.BUCKET_KEY_TOKEN_EXPIRY, })); if (!access_token || !expires_at) { return null; } return { access_token, expires_at: new Date(expires_at), }; } catch (error) { return null; } } async setAuthTokenRetryCount(retryCount) { try { if (!retryCount) { throw new InvalidTokenRetryCountError(); } await this._storage.set({ bucket: Constants.BUCKET_AUTH_STORE, key: Constants.BUCKET_KEY_AUTH_RETRY_COUNT, data: retryCount, }); return true; } catch (error) { return false; } } async getAuthTokenRetryCount() { try { const data = (await this._storage.get({ bucket: Constants.BUCKET_AUTH_STORE, key: Constants.BUCKET_KEY_AUTH_RETRY_COUNT, })); if (!data) { return 0; } return data; } catch (error) { return 0; } } }