"use strict"; // Clases moq de terceros class InstallServer { installAppService(url, filePath) { console.log(`InstallServer: connecting into IIS... `); console.log(`InstallServer: creating new appService ${url}`); console.log(`InstallServer: installing ${filePath} into ${url} `); } verifyAppService(url, filePath) { console.log(`InstallServer: checking the website...`); return true; } } class Database { installBackup(databaseName) { let connectionString = "FAKE_CONNECTION_STRING"; console.log(`Database: connecting into database server... `); console.log(`Database: creating new database ${url}`); console.log(`Database: checking database ${url} `); return connectionString; } executeScripts(connectionString) { console.log( `Database: executing specific scripts into ${connectionString}... ` ); } } class ConfigWebsiteFiles { replaceConnectionStrings(url, connectionString) { console.log(`ConfigWebsiteFiles: connecting into IIS... `); console.log( `ConfigWebsiteFiles: replacing appService ${url} connection string ${connectionString}` ); } testConnection() { console.log(`ConfigWebsiteFiles: checking status endpoint`); return true; } } class DnsServices { updateDns(url, ip) { console.log(`DnsServices: connecting into dns provider...`); console.log(`DnsServices: connecting new ${url} to ${ip}`); console.log(`DnsServices: checking new redirect`); } } // Façade class WebsiteCreator { // Implementación de facade. CreateWebsite(url, filePath) { let serverManager = new InstallServer(); serverManager.installAppService(url, filePath); if (!serverManager.verifyAppService(url, filePath)) { throw 500; } let databaseName = url.replace("http://", ""); let databaseManager = new Database(); let connectionString = databaseManager.installBackup(databaseName); databaseManager.executeScripts(connectionString); let configManager = new ConfigWebsiteFiles(); configManager.replaceConnectionStrings(url, connectionString); if (!configManager.testConnection()) { throw 501; } let dnsManager = new DnsServices(); let ip = "0.0.0.0"; dnsManager.updateDns(url, ip); console.log(`sitio ${url} creado correctamente`); } } //Cliente let url = "http://holafacade.com"; let filePath = "/etc/temp/holafacade"; let websiteCreator = new WebsiteCreator(); websiteCreator.CreateWebsite(url, filePath);