UNPKG

cbp-lib

Version:

Libraries for cbp

71 lines (62 loc) 2.95 kB
'use strict' import { BehaviorSubject } from "rxjs" import { Timer } from "../_helpers/timer" import { Log } from "../_helpers/Log" const accessTokenExpiringSubject = new BehaviorSubject(null) const accessTokenExpiredSubject = new BehaviorSubject(null) const DefaultAccesTokenExpiringNotification = 60 export class AccessTokenEvent { constructor({ accessTokenExpiringNotificationTime = DefaultAccesTokenExpiringNotification, accessTokenExpiringTimer = new Timer(this.addAccessTokenExpiring.bind(this), "Access Token Expiring"), accessTokenExpiredTimer = new Timer(this.addAccessTokenExpired.bind(this), "Access Token Expired"), _accessTokenExpiringEvent = accessTokenExpiringSubject.asObservable(), _accessTokenExpiredEvent = accessTokenExpiredSubject.asObservable() } = {}) { Log.debug("AccessToken: Initialize..") this._accessTokenExpiringNotificationTime = accessTokenExpiringNotificationTime this._accessTokenExpiringTimer = accessTokenExpiringTimer this._accessTokenExpiredTimer = accessTokenExpiredTimer this.accessTokenExpiringEvent = _accessTokenExpiringEvent this.accessTokenExpiredEvent = _accessTokenExpiredEvent } load(container) { Log.debug("AccessToken: Container" + container) if (container.access_token && container.expires_in !== undefined) { let duration = container.expires_in Log.debug("AccessToken: Duration " + duration) if (duration > 0) { let expiring = duration - this._accessTokenExpiringNotificationTime; if (expiring <= 0){ expiring = 1; } Log.debug("AccessTokenEvent.load: registering expiring timer in: " + expiring); this._accessTokenExpiringTimer.init(expiring); } else { Log.debug("AccessTokenEventsload: canceling existing expiring timer becase we're past expiration."); this._accessTokenExpiringTimer.cancel(); } let expired = duration + 1; Log.debug("AccessTokenEvent.load: registering expired timer in: " + expired); this._accessTokenExpiredTimer.init(expired); } else { this._accessTokenExpiringTimer.cancel(); this._accessTokenExpiredTimer.cancel(); } } unload() { Log.debug("AccessTokenEvent.unload: canceling existing access token timers"); this._accessTokenExpiringTimer.cancel(); this._accessTokenExpiredTimer.cancel(); } addAccessTokenExpiring(data) { Log.debug("AccessTokenEvent.addAccessTokenExpiring: " + data) accessTokenExpiringSubject.next(data) } addAccessTokenExpired(data) { Log.debug("AccessTokenEvent.addAccessTokenExpired: " + data) accessTokenExpiredSubject.next(data) } }