UNPKG

@nepse-helper/core

Version:

A helper library for NEPSE

60 lines (59 loc) 2.18 kB
import { ENDPOINTS, nepseApi } from "../consts/api"; import { tokenStore } from "../consts/store/store"; import { getMagicNumberFor } from "../helpers/magic-number.helper"; export class Auth { _axios = nepseApi; marketWrapper; tokenHelper; constructor(marketWrapper, tokenHelper) { this.marketWrapper = marketWrapper; this.tokenHelper = tokenHelper; } async authenticate() { const prove = await this._axios .get(ENDPOINTS.api.authenticate.getProve) .then((res) => res.data); const NEPAL_HOUR_OFFSET = 5.75; const nepalDate = new Date(prove.serverTime + NEPAL_HOUR_OFFSET * 60 * 1000); // Date constructor doesn't consider timezone offset const salts = [ prove.salt1, prove.salt2, prove.salt3, prove.salt4, prove.salt5, ]; tokenStore.set({ accessToken: this.tokenHelper.encodeAccessToken(prove.accessToken, salts), refreshToken: this.tokenHelper.encodeRefreshToken(prove.refreshToken, salts), initialMagicNumbers: salts, magicNumbers: salts, serverDay: nepalDate.getDate(), }); const marketOpen = await this.marketWrapper.getMarketOpen(); tokenStore.set({ magicNumber: getMagicNumberFor(marketOpen.id, nepalDate.getDate()), serverDay: nepalDate.getDate(), }); } async refreshToken() { const prove = await this._axios .post(ENDPOINTS.api.authenticate.refreshToken, { refreshToken: tokenStore.get("refreshToken"), }) .then((resp) => resp.data); const magicNumbers = [ prove.salt1, prove.salt2, prove.salt3, prove.salt4, prove.salt5, ]; const accessToken = this.tokenHelper.encodeAccessToken(prove.accessToken, magicNumbers); const refreshToken = this.tokenHelper.encodeRefreshToken(prove.refreshToken, magicNumbers); tokenStore.set({ accessToken, refreshToken, magicNumbers, }); } }