UNPKG

dl

Version:

DreamLab Libs

117 lines (91 loc) 3.9 kB
var Class = require("core").Class; var Assertions = require("core").common.Assertions; var Types = require("core").common.Types; var EventDispatcher = require("core").event.EventDispatcher; var Event = require("core").event.Event; var ErrorEvent = require("core").event.ErrorEvent; var OpalRequest = require('../opal/OpalRequest.js').OpalRequest; var OpalLoader = require('../opal/OpalLoader.js').OpalLoader; var Loader = require('core').http.Loader; var JsonRpcResponse = require("core").jsonrpc.JsonRpcResponse; var SingletonEnforcer = function(){}; SingletonEnforcer = new Class(new SingletonEnforcer()); var CredentialsManagerInstance = null; var CredentialsManager = function () { this.Extends = EventDispatcher; /* this._credentials = {}; this._jobs = {}; this._applicationName; */ this.initialize = function (enforcer, appName) { this.parent(); this._credentials = {}; this._jobs = {}; Assertions.isInstanceOf(enforcer, SingletonEnforcer, CredentialsManager.Exception.SINGLETON); this._applicationName = appName; }; this.addEventListener = function (eventName, key, callback, context) { return this.parent(eventName + key, callback, context); }; this.removeEventListener = function (eventName, key, callback) { return this.parent(eventName + key, callback); }; this.getCredential = function (key) { if (this._credentials.hasOwnProperty(key)) { this.dispatchEvent(new Event(CredentialsManager.Event.LOADED + key, this._credentials[key])); } else { this.renewCredential(key); } }; this.renewCredential = function (key) { var self = this; if (this._jobs.hasOwnProperty(key)) { return; } this._jobs[key] = true; (new OpalLoader(new OpalRequest({ "url": "router.opaladmin.onetapi.pl", "method": "get_credentials", "params": { "ds_alias": key }, "application": this._applicationName }))).addEventListener(OpalLoader.Event.JSON_RESPONSE, function(data){ var rpc = data.data.getBody(); if (rpc.isError()) { delete self._jobs[key]; self.dispatchEvent(new ErrorEvent(CredentialsManager.Event.ERROR + key, rpc.getError())); return; } self._credentials[key] = rpc.getResult(); delete self._jobs[key]; self.dispatchEvent(new Event(CredentialsManager.Event.LOADED + key, self._credentials[key])); }).addEventListener(Loader.Event.ERROR, function(data){ delete self._jobs[key]; self.dispatchEvent(new ErrorEvent(CredentialsManager.Event.ERROR + key, data)); }).load(); }; }; CredentialsManager = new Class(new CredentialsManager()); var factoryInstances = {}; CredentialsManager.factory = function (appName) { if (!Types.isString(appName)) { if (process.env['OPAL_IDENTITY']) { appName = process.env['OPAL_IDENTITY']; } else { appName = "edgeserver.edgeserver.onetapi.pl"; } } if (factoryInstances.hasOwnProperty(appName)) { return factoryInstances[appName]; } factoryInstances[appName] = new CredentialsManager(new SingletonEnforcer(), appName); return factoryInstances[appName]; }; CredentialsManager.Event = {}; CredentialsManager.Event.LOADED = 'CredentialsManager_LOADED_'; CredentialsManager.Event.ERROR = 'CredentialsManager_ERROR_'; CredentialsManager.Exception = {}; CredentialsManager.Exception.SINGLETON = "Singleton class, use factory() instead."; exports.CredentialsManager = CredentialsManager;