import ConfigManager from "./config/ConfigManager"; import SimpleConfigManager from "./config/SimpleConfigManager"; import RegisteredApiBufferManager from "./buffer/RegisteredApiBufferManager"; import DiscoveredApiBufferManager from "./buffer/DiscoveredApiBufferManager"; import ApiProcessor from "./filter/ApiProcessor"; import ShortloopNodeFilter from "./filter/ShortloopNodeFilter"; import SDKVersion from "./SDKVersion"; import { isNil } from "./common/utils/Validators"; class ShortloopAutoConfiguration { private readonly url: string; private readonly userApplicationName: string; private nodeFilter: ShortloopNodeFilter | undefined; constructor(url: string, userApplicationName: string) { this.url = url.trim(); this.userApplicationName = userApplicationName.trim(); } static isValidConfig(options: any) { if (isNil(options)) { let message: string = "Mandatory Config { url: string, userApplicationName: string } is missing"; console.log(message); return false; } if (isNil(options.url)) { let message: string = "Mandatory Config `url` is missing"; console.log(message); return false; } if (isNil(options.userApplicationName)) { let message: string = "Mandatory Config `userApplicationName` is missing"; console.log(message); return false; } return true; } init(): boolean { // let randomId:number = Math.floor(Math.random() * 1000000000); let randomId: number = 1; let agentId: string = randomId.toString(); let configManager: ConfigManager = new SimpleConfigManager( this.url, this.userApplicationName, agentId ); configManager.init(); let registeredBufferManager: RegisteredApiBufferManager = new RegisteredApiBufferManager(configManager, this.url); registeredBufferManager.init(); let discoveredBufferManager: DiscoveredApiBufferManager = new DiscoveredApiBufferManager(configManager, this.url); discoveredBufferManager.init(); let shortloopApiProcessor: ApiProcessor = new ApiProcessor( registeredBufferManager, discoveredBufferManager ); let shortloopNodeFilter: ShortloopNodeFilter = new ShortloopNodeFilter( configManager, shortloopApiProcessor, this.userApplicationName ); shortloopNodeFilter.init(); this.nodeFilter = shortloopNodeFilter; // this.nodeFilter.getApiProcessor().printApiSamples(); let message: string = `Shortloop Node Filter initialized with \nurl:: ${this.url} \n userApplicationName:: ${this.userApplicationName} \n SDK Version:: ${SDKVersion.MAJOR_VERSION}.${SDKVersion.MINOR_VERSION}.${SDKVersion.MINOR_VERSION}`; console.log(message); return true; } getNodeFilter(): ShortloopNodeFilter | undefined { return this.nodeFilter; } } export default ShortloopAutoConfiguration;