public SystemController(SystemStatusService systemStatusService, SystemService systemService, PackageManagerService packageManagerService, StorageService storageService) { _systemStatusService = systemStatusService ?? throw new ArgumentNullException(nameof(systemStatusService)); _systemService = systemService ?? throw new ArgumentNullException(nameof(systemService)); _packageManagerService = packageManagerService ?? throw new ArgumentNullException(nameof(packageManagerService)); _storageService = storageService ?? throw new ArgumentNullException(nameof(storageService)); }
public ServiceHostService( StorageService storageService, PackageManagerService repositoryService, PythonScriptHostFactoryService pythonScriptHostFactoryService, SystemService systemService, SystemStatusService systemStatusService, ILogger <ServiceHostService> logger) { _repositoryService = repositoryService ?? throw new ArgumentNullException(nameof(repositoryService)); _pythonScriptHostFactoryService = pythonScriptHostFactoryService ?? throw new ArgumentNullException(nameof(pythonScriptHostFactoryService)); _storageService = storageService ?? throw new ArgumentNullException(nameof(storageService)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); if (systemStatusService == null) { throw new ArgumentNullException(nameof(systemStatusService)); } systemStatusService.Set("service_host.service_count", () => _services.Count); if (systemService == null) { throw new ArgumentNullException(nameof(systemService)); } systemService.StartupCompleted += (s, e) => { StartDelayedServices(); }; }
public bool Loop() { while (_state == States.Working) { } PackageManagerService.SetState(MainPackageStates.Idle); return(false); }
static void ConfigureWebApps( IApplicationBuilder app, GlobalVariablesService globalVariablesService, PackageManagerService packageManagerService, MqttService mqttService) { var storagePaths = new StoragePaths(); var customContentRootPath = Path.Combine(storagePaths.DataPath, "CustomContent"); var packagesRootPath = Path.Combine(storagePaths.DataPath, "Packages"); var storageService = new StorageService(new JsonSerializerService(), new LoggerFactory().CreateLogger <StorageService>()); storageService.Start(); if (storageService.TryReadSerializedValue(out PackageManagerServiceOptions repositoryServiceOptions, PackageManagerServiceOptions.Filename)) { if (!string.IsNullOrEmpty(repositoryServiceOptions.RootPath)) { packagesRootPath = repositoryServiceOptions.RootPath; } } if (!Directory.Exists(customContentRootPath)) { Directory.CreateDirectory(customContentRootPath); } if (!Directory.Exists(packagesRootPath)) { Directory.CreateDirectory(packagesRootPath); } app.Map("/upnp.xml", options => { options.Run(async h => { var upnpFilePath = Path.Combine(storagePaths.BinPath, "Discovery", "upnp.xml"); var upnpDefinition = await File.ReadAllBytesAsync(upnpFilePath).ConfigureAwait(false); await h.Response.Body.WriteAsync(upnpDefinition).ConfigureAwait(false); }); }); // Open the configurator by default if no path is specified. var option = new RewriteOptions(); option.AddRedirect("^$", "/configurator"); app.UseRewriter(option); ExposeDirectory(app, "/app", new PackageFileProvider(GlobalVariableUids.AppPackageUid, globalVariablesService, packageManagerService)); ExposeDirectory(app, "/configurator", new PackageFileProvider(GlobalVariableUids.AppPackageUid, globalVariablesService, packageManagerService)); ExposeDirectory(app, "/customContent", new PhysicalFileProvider(customContentRootPath)); ExposeDirectory(app, "/packages", new PhysicalFileProvider(packagesRootPath)); var webSocketOptions = new WebSocketOptions(); app.UseWebSockets(webSocketOptions); ConfigureMqttWebSocketEndpoint(app, mqttService); }
public void RegisterMainPackageStates(iStatePackage package) { List <MainPackageStates> states = new List <MainPackageStates>() { MainPackageStates.Migrate }; PackageManagerService.RegisterMainPackageStates(states, package); }
public ComponentInitializerService( PythonScriptHostFactoryService pythonScriptHostFactoryService, PackageManagerService packageManagerService, ILogger <ScriptComponentLogic> scriptComponentLogicLogger, ILogger <ScriptComponentAdapter> scriptComponentAdapterLogger) { _pythonScriptHostFactoryService = pythonScriptHostFactoryService ?? throw new ArgumentNullException(nameof(pythonScriptHostFactoryService)); _packageManagerService = packageManagerService ?? throw new ArgumentNullException(nameof(packageManagerService)); _scriptComponentLogicLogger = scriptComponentLogicLogger ?? throw new ArgumentNullException(nameof(scriptComponentLogicLogger)); _scriptComponentAdapterLogger = scriptComponentAdapterLogger ?? throw new ArgumentNullException(nameof(scriptComponentAdapterLogger)); }
public bool Loop() { if (_state != States.Exit) { return(false); } _state = States.None; PackageManagerService.SetState(MainPackageStates.Idle); //Returning true will exit the program. return(true); }
public AutomationRegistryService( PackageManagerService packageManagerService, PythonScriptHostFactoryService pythonScriptHostFactoryService, StorageService storageService, MessageBusService messageBusService, ILogger <AutomationRegistryService> logger) { _packageManagerService = packageManagerService ?? throw new ArgumentNullException(nameof(packageManagerService)); _pythonScriptHostFactoryService = pythonScriptHostFactoryService ?? throw new ArgumentNullException(nameof(pythonScriptHostFactoryService)); _storageService = storageService ?? throw new ArgumentNullException(nameof(storageService)); _messageBusService = messageBusService ?? throw new ArgumentNullException(nameof(messageBusService)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); }
// ReSharper disable once UnusedMember.Global public void Configure( IApplicationBuilder app, IHostingEnvironment env, HttpServerService httpServerService, LogService logService, ILoggerFactory loggerFactory, IServiceProvider serviceProvider, GlobalVariablesService globalVariablesService, PackageManagerService packageManagerService) { if (app == null) { throw new ArgumentNullException(nameof(app)); } if (env == null) { throw new ArgumentNullException(nameof(env)); } if (httpServerService == null) { throw new ArgumentNullException(nameof(httpServerService)); } if (logService == null) { throw new ArgumentNullException(nameof(logService)); } if (loggerFactory == null) { throw new ArgumentNullException(nameof(loggerFactory)); } loggerFactory.AddProvider(new LogServiceLoggerProvider(logService)); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseResponseCompression(); app.UseCors(p => p.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod()); ConfigureSwagger(app); ConfigureWebApps(app, globalVariablesService, packageManagerService); ConfigureMvc(app); app.Run(httpServerService.HandleRequestAsync); StartServices(serviceProvider); }
public PackageFileProvider(string packageUidGlobalVariableUid, GlobalVariablesService globalVariablesService, PackageManagerService packageManagerService) { _packageUidGlobalVariableUid = packageUidGlobalVariableUid ?? throw new ArgumentNullException(nameof(packageUidGlobalVariableUid)); _globalVariablesService = globalVariablesService ?? throw new ArgumentNullException(nameof(globalVariablesService)); _packageManagerService = packageManagerService ?? throw new ArgumentNullException(nameof(packageManagerService)); }
public bool Loop() { HelpService.ShowHelp(); PackageManagerService.SetState(MainPackageStates.Idle); return(false); }
private void Execute() { switch (_state) { case States.TitleData: #region Update Title Data Keys if (!_titleData.FromProcessed) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Getting Title Data from: " + _commandArgs.FromTitleId); PlayFabService.GetTitleData(_commandArgs.FromTitleId, (success, result) => { if (!success || result.Data.Count == 0) { Console.WriteLine("No Title Data found, skipping"); SetNextState(); } else { Console.WriteLine("Title Data Keys Found: " + result.Data.Count.ToString()); _titleData.Data = result.Data; _titleData.FromProcessed = true; } }); } if (!_titleData.ToProcessed && _titleData.FromProcessed) { if (_titleData.Data.Count == 0) { _titleData.ToProcessed = true; SetNextState(); break; } var kvp = _titleData.Pop(); Console.WriteLine("Saving Title Data from: " + _commandArgs.FromTitleId + " To: " + _commandArgs.ToTitleId); PlayFabService.UpdateTitleData(_commandArgs.ToTitleId, kvp, (success) => { if (!success) { Console.WriteLine("Save Title Data Failed, skipping"); SetNextState(); } }); } #endregion break; case States.TitleInternalData: #region Update Title Internal Data Keys if (!_titleInternalData.FromProcessed) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Getting Title Interal Data from: " + _commandArgs.FromTitleId); PlayFabService.GetTitleInternalData(_commandArgs.FromTitleId, (success, result) => { if (!success || result.Data.Count == 0) { Console.WriteLine("No Title Internal Data found, skipping"); SetNextState(); } else { Console.WriteLine("Title Internal Data Keys Found: " + result.Data.Count.ToString()); _titleInternalData.Data = result.Data; _titleInternalData.FromProcessed = true; } }); } if (!_titleInternalData.ToProcessed && _titleInternalData.FromProcessed) { if (_titleInternalData.Data.Count == 0) { _titleInternalData.ToProcessed = true; SetNextState(); break; } var kvp = _titleInternalData.Pop(); Console.WriteLine("Saving Title Interal Data from: " + _commandArgs.FromTitleId + " To: " + _commandArgs.ToTitleId); PlayFabService.UpdateTitleInternalData(_commandArgs.ToTitleId, kvp, (success) => { if (!success) { Console.WriteLine("Save Title Interal Data Failed, skipping"); SetNextState(); } }); } #endregion break; case States.Currency: #region Update Currency Types if (!_currencyData.FromProcessed) { Console.WriteLine("Getting Currency Types Data from: " + _commandArgs.FromTitleId); PlayFabService.GetCurrencyData(_commandArgs.FromTitleId, (success, vcData) => { if (!success || vcData.Count == 0) { Console.WriteLine("Error Fetching Currency Type Data, skipping"); SetNextState(); return; } _currencyData.Data = vcData; _currencyData.FromProcessed = true; }); } if (!_currencyData.ToProcessed && _currencyData.FromProcessed) { if (_currencyData.Data == null) { _currencyData.ToProcessed = true; SetNextState(); break; } PlayFabService.UpdateCurrencyData(_commandArgs.ToTitleId, _currencyData.Data, (success) => { if (!success) { Console.WriteLine("Save Title Data Failed."); _cts.Cancel(); } _currencyData.Data = null; }); } #endregion break; case States.CloudScript: #region Update CloudScript File if (!_cloudScriptData.FromProcessed) { Console.WriteLine("Getting CloudScript Data from: " + _commandArgs.FromTitleId); PlayFabService.GetCloudScript(_commandArgs.FromTitleId, (success, data) => { if (!success || data.Count == 0) { Console.WriteLine("Error Fetching CloudScript Data, skipping."); SetNextState(); return; } _cloudScriptData.Data = data; _cloudScriptData.FromProcessed = true; }); } if (!_cloudScriptData.ToProcessed && _cloudScriptData.FromProcessed) { if (_cloudScriptData.Data == null) { _cloudScriptData.ToProcessed = true; SetNextState(); break; } Console.WriteLine("Updating CloudScript on Title: " + _commandArgs.ToTitleId); PlayFabService.UpdateCloudScript(_commandArgs.ToTitleId, _cloudScriptData.Data, (success) => { //if (!success) //{ // Console.WriteLine("Save CloudScript Failed."); // _cts.Cancel(); //} _cloudScriptData.Data = null; }); } #endregion break; case States.Files: #region Update Content Files //Start by creating a temp directory var path = AppDomain.CurrentDomain.BaseDirectory + "temp"; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } if (!_cdnData.FromProcessed) { PlayFabService.GetContentList(_commandArgs.FromTitleId, (success, data) => { if (!success) { Console.WriteLine("Error Fetching CloudScript Data, skipping"); SetNextState(); return; } _cdnData.Data = data; _cdnData.FromProcessed = true; }); } if (!_cdnData.ToProcessed && _cdnData.FromProcessed) { if (_cdnData.Data.Count == 0 && _cdnData.FileList.Count == 0) { _cdnData.ToProcessed = true; _cdnData.Data = null; _cdnData.FileList = null; Directory.Delete(path, true); SetNextState(); break; } if (_cdnData.Data.Count > 0) { var isDone = false; PlayFabService.DownloadFile(_commandArgs.FromTitleId, path, _cdnData.popData(), (success, filePath, data) => { if (success) { _cdnData.FileList.Add(new CdnFileDataMigration.UploadFile() { Data = data, FilePath = filePath }); } isDone = true; }); do { //block until done. } while (!isDone); break; } if (_cdnData.Data.Count == 0 && _cdnData.FileList.Count > 0) { var isUploadDone = false; PlayFabService.UploadFile(_commandArgs.ToTitleId, _cdnData.popFileList(), (success) => { isUploadDone = true; }); do { //Block until this file upload is done. } while (!isUploadDone); } } #endregion break; case States.Catalogs: #region Update Catalog if (_catalogData.FromProcessed && _catalogData.ToProcessed) { SetNextState(); break; } if (!_catalogData.FromProcessed) { //TODO: Make this support multiple catalogs Console.WriteLine("Getting Catalog Data for Main Catalog only"); PlayFabService.GetCatalogData(_commandArgs.FromTitleId, (success, catalogVersion, catalog) => { if (!success) { Console.WriteLine("Error Fetching CloudScript Data, skipping"); SetNextState(); } _catalogData.Data = catalog; _catalogData.CatalogVersion = catalogVersion; _catalogData.FromProcessed = true; }); } if (!_catalogData.ToProcessed && _catalogData.FromProcessed) { Console.WriteLine("Updating Catalog on Title: " + _commandArgs.ToTitleId); PlayFabService.UpdateCatalogData(_commandArgs.ToTitleId, _catalogData.CatalogVersion, true, _catalogData.Data, (success) => { if (!success) { Console.WriteLine("Save Catalog Failed, skipping."); SetNextState(); } _catalogData.Data = null; _catalogData.CatalogVersion = null; _catalogData.ToProcessed = true; }); } #endregion break; case States.Stores: #region Update Stores if (_storeData.IsComplete) { _storeData.Data = null; _storeData.MarketingModel = null; _storeData.StoreId = null; _storeData.CatalogVersion = null; SetNextState(); break; } if (!_storeData.FromProcessed) { if (_storeData.StoreList.Count == 0) { SetNextState(); break; } var currentStoreId = _storeData.popStoreId(); Console.WriteLine("Getting Store Data for StoreID: " + currentStoreId); PlayFabService.GetStoreData(_commandArgs.FromTitleId, currentStoreId, (success, catalogVersion, storeId, marketingModel, store) => { if (!success) { Console.WriteLine("Error Fetching Store Data, Skipping."); SetNextState(); } _storeData.FromProcessed = true; _storeData.Data = store; _storeData.CatalogVersion = catalogVersion; _storeData.StoreId = storeId; _storeData.MarketingModel = marketingModel; }); } if (!_storeData.ToProcessed && _storeData.FromProcessed) { var currentStoreId = _storeData.StoreId; PlayFabService.UpdateStoreData(_commandArgs.ToTitleId, _storeData.StoreId, _storeData.CatalogVersion, _storeData.MarketingModel, _storeData.Data, (success) => { if (!success) { Console.WriteLine("Save Store Failed, Skipping."); SetNextState(); } _storeData.Data = null; _storeData.CatalogVersion = null; if (_storeData.StoreList.Count == 0) { _storeData.ToProcessed = true; _storeData.IsComplete = true; } else { _storeData.ToProcessed = false; _storeData.FromProcessed = false; } }); } #endregion break; case States.DropTables: #region Update Drop Tables if (_droptableData.FromProcessed && _droptableData.ToProcessed) { SetNextState(); break; } if (!_droptableData.FromProcessed) { //TODO: Make this support multiple catalogs Console.WriteLine("Getting Drop Table Data for Main Catalog only"); PlayFabService.GetDropTableData(_commandArgs.FromTitleId, (success, catalog) => { if (!success) { Console.WriteLine("Error Fetching CloudScript Data, skipping"); SetNextState(); } _droptableData.Data = new Queue <List <RandomResultTable> >(); Dictionary <string, RandomResultTableListing> listing = new Dictionary <string, RandomResultTableListing>(catalog); List <RandomResultTable> thisList = new List <RandomResultTable>(); foreach (var v in listing) { bool referencesDropTable = false; foreach (var item in v.Value.Nodes) { if (item.ResultItemType == ResultTableNodeType.TableId) { referencesDropTable = true; break; } } if (!referencesDropTable) { RandomResultTable table = new RandomResultTable(); table.TableId = v.Value.TableId; table.Nodes = v.Value.Nodes; thisList.Add(table); } } if (thisList.Count != 0) { while (true) { _droptableData.Data.Enqueue(thisList); foreach (var item in thisList) //remove from pending list { listing.Remove(item.TableId); } //Add any references List <RandomResultTable> nextList = new List <RandomResultTable>(); foreach (var item in listing) { bool referencesCurrent = false; foreach (var node in item.Value.Nodes) { if (node.ResultItemType == ResultTableNodeType.TableId && thisList.Any(x => x.TableId == node.ResultItem)) { referencesCurrent = true; break; } } if (referencesCurrent) { RandomResultTable table = new RandomResultTable(); table.TableId = item.Value.TableId; table.Nodes = item.Value.Nodes; nextList.Add(table); } } if (nextList.Count == 0) { break; } thisList = nextList; } } _droptableData.FromProcessed = true; }); } if (!_droptableData.ToProcessed && _droptableData.FromProcessed) { Console.WriteLine("Updating Drop Tables on Title: " + _commandArgs.ToTitleId); PlayFabService.UpdateDropTableData(_commandArgs.ToTitleId, _droptableData.Data.Dequeue(), (success) => { if (!success) { Console.WriteLine("Save Catalog Failed, skipping."); SetNextState(); } //_catalogData.Data = null; //_catalogData.CatalogVersion = null; if (_droptableData.Data.Count == 0) { _droptableData.Data = null; _droptableData.ToProcessed = true; } }); } #endregion break; case States.Complete: Console.WriteLine("Migration Complete."); Console.ForegroundColor = ConsoleColor.White; PackageManagerService.SetState(MainPackageStates.Idle); _cts.Cancel(); break; } }
public ToolsController(PythonScriptHostFactoryService pythonScriptHostFactoryService, PackageManagerService packageManagerService) { _pythonScriptHostFactoryService = pythonScriptHostFactoryService ?? throw new ArgumentNullException(nameof(pythonScriptHostFactoryService)); _packageManagerService = packageManagerService ?? throw new ArgumentNullException(nameof(packageManagerService)); }
public PackageManagerController(PackageManagerService packageManagerService) { _packageManagerService = packageManagerService ?? throw new ArgumentNullException(nameof(packageManagerService)); }
public bool Loop() { var waitForLogin = false; switch (_state) { case States.WaitForUsername: Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine(""); Console.WriteLine("Username:"******""); Console.WriteLine("Password:"******""); Console.WriteLine("2FA Token:"); break; case States.Login: waitForLogin = true; PlayFabService.Login(_username, _password, _2faToken, (success, devKey) => { if (!success) { PackageManagerService.SetState(MainPackageStates.Idle); _state = States.Idle; waitForLogin = false; return; } _DeveloperClientToken = devKey; Console.ForegroundColor = ConsoleColor.White; _state = States.GetStudios; Loop(); waitForLogin = false; }); break; case States.GetStudios: waitForLogin = true; PlayFabService.GetStudios(_DeveloperClientToken, (success) => { PackageManagerService.SetState(MainPackageStates.Idle); _state = States.Idle; waitForLogin = false; }); break; case States.Idle: default: break; } //TODO: Paul Help? do { //Block util login call is done. } while (waitForLogin); return(false); }
public PackageManagerServicePythonProxy(PackageManagerService packageManagerService) { _packageManagerService = packageManagerService ?? throw new ArgumentNullException(nameof(packageManagerService)); }
static void Main(string[] args) { _args = args; _lineSb = new StringBuilder(); //Parse Args and determine if this is a CLI or Console mode. if (args.Length > 0 && !_argsRead) { _isCLI = true; foreach (var a in args) { _lineSb.Append(a + " "); } _line = _lineSb.ToString(); _argsRead = true; _args = new string[0]; } else { _readLine = true; _argsRead = true; } //Init PlayFab Service Settings PlayFabService.Init(); //Load Settings File PlayFabService.Load(); //Out put to screen some fancy playfab jazz Console.WriteLine(""); Console.ForegroundColor = ConsoleColor.Green; Console.Write(".oO={ "); Console.ForegroundColor = ConsoleColor.White; Console.Write("PlayFab Power Tools CLI"); Console.ForegroundColor = ConsoleColor.Green; Console.Write(" }=Oo."); Console.ForegroundColor = ConsoleColor.White; //if this is a console app then we want to show them how to get help. if (!_isCLI) { Console.WriteLine(""); Console.WriteLine("Type: 'Help' for a list of commands"); Console.WriteLine(""); Console.Write(">"); } else { Console.WriteLine(""); Console.WriteLine(""); } //Load all the packages that process commands var type = typeof(iStatePackage); var types = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(s => s.GetTypes()) .Where(p => type.IsAssignableFrom(p) && p.Name != "iStatePackage"); //foreach package we need to register with Package Manager foreach (var t in types) { var packageType = (iStatePackage)Activator.CreateInstance(t); packageType.RegisterMainPackageStates(packageType); } //get the correct package for the state we are in _currentPackage = PackageManagerService.GetPackage(); //This is the main program loop. do { //if we are a console app, read the command that is entered. if (_args.Length == 0 && _readLine) { if (!_isTypedTextHidden) { //Read the line input from the console. _line = Console.ReadLine(); } else { //Read the line in a different way. ConsoleKeyInfo key; do { key = Console.ReadKey(true); if (key.Key != ConsoleKey.Enter) { var s = string.Format("{0}", key.KeyChar); _lineSb.Append(s); } } while (key.Key != ConsoleKey.Enter); _line = _lineSb.ToString(); } } //Set read line to true, not it will only be false if we came from a CLI. _readLine = true; var loopReturn = false; if (PackageManagerService.IsIdle()) { //If we are idle then we want to check for commands. PackageManagerService.SetState(_line); _currentPackage = PackageManagerService.GetPackage(); _isTypedTextHidden = _currentPackage.SetState(_line); loopReturn = _currentPackage.Loop(); } else { //If we are not idle, then we want to process the _line for arguments. //get the correct package for the state we are in _currentPackage = PackageManagerService.GetPackage(); //process the package state _isTypedTextHidden = _currentPackage.SetState(_line); //do package loop, which contains logic to do stuff. loopReturn = _currentPackage.Loop(); } //if this is a CLI then we just want to exit. if (!_isCLI) { //Prompt or exit. if (!loopReturn) { Console.Write(">"); } else { _line = null; } } else { _line = null; } } while (_line != null); //Always save before we completely exit. PlayFabService.Save(); }
// Only call from InitializeAgentConnectionAsync async Task DoInitalizeAgentConnectionAsync() { try { ResetAgentConnection(); using (ViewControllers.Messages.PushMessage( Message.CreateInfoStatus( Catalog.GetString("Connecting to agent…"), showSpinner: true))) await ConnectToAgentAsync(CancellationToken); using (ViewControllers.Messages.PushMessage( Message.CreateInfoStatus( Catalog.GetString("Preparing workspace…"), showSpinner: true))) { await InitializeCompilationWorkspaceAsync(CancellationToken); if (EvaluationService == null) { var evaluationService = new EvaluationService( CompilationWorkspace, new EvaluationEnvironment(WorkingDirectory)); evaluationService.NotifyEvaluationContextManagerChanged(Agent.Api.EvaluationContextManager); EvaluationService = evaluationService; } if (SessionKind == ClientSessionKind.Workbook) { PackageManager = new PackageManagerService( CompilationWorkspace.Configuration.DependencyResolver, EvaluationService, async(refreshForAgentIntegration, cancellationToken) => { if (refreshForAgentIntegration) { await RefreshForAgentIntegration(); } return(Agent); }); } else { PackageManager = null; } } } catch (Exception e) { Log.Error(TAG, e); ViewControllers.Messages.PushMessage(WithReconnectSessionAction(e .ToAlertMessage(Catalog.GetString("Unable to connect")))); return; } try { using (ViewControllers.Messages.PushMessage( Message.CreateInfoStatus( Catalog.GetString("Restoring packages…"), showSpinner: true))) await PackageManager?.InitializeAsync( WorkbookApp.Sdk, Workbook .Pages .SelectMany(page => page.Packages), CancellationToken); } catch (Exception e) { Log.Error(TAG, e); ViewControllers.Messages.PushMessage(e .ToAlertMessage(Catalog.GetString("Unable to restore packages"))); } }
private static void ConfigureWebApps(IApplicationBuilder app, GlobalVariablesService globalVariablesService, PackageManagerService packageManagerService) { var storagePaths = new StoragePaths(); var customContentRootPath = Path.Combine(storagePaths.DataPath, "CustomContent"); var packagesRootPath = Path.Combine(storagePaths.DataPath, "Packages"); var storageService = new StorageService(new JsonSerializerService(), new LoggerFactory().CreateLogger <StorageService>()); storageService.Start(); if (storageService.TryRead(out PackageManagerServiceOptions repositoryServiceOptions, PackageManagerServiceOptions.Filename)) { if (!string.IsNullOrEmpty(repositoryServiceOptions.RootPath)) { packagesRootPath = repositoryServiceOptions.RootPath; } } app.UseFileServer(new FileServerOptions { RequestPath = "/app", FileProvider = new PackageFileProvider(GlobalVariableUids.AppPackageUid, globalVariablesService, packageManagerService) }); app.UseFileServer(new FileServerOptions { RequestPath = "/configurator", FileProvider = new PackageFileProvider(GlobalVariableUids.ConfiguratorPackageUid, globalVariablesService, packageManagerService) }); // Open the configurator by default if no path is specified. var option = new RewriteOptions(); option.AddRedirect("^$", "/configurator"); app.UseRewriter(option); ExposeDirectory(app, "/customContent", customContentRootPath); ExposeDirectory(app, "/packages", packagesRootPath); }