cbp-lib
Version:
Libraries for cbp
71 lines (62 loc) • 2.95 kB
JavaScript
'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)
}
}