public WeatherStrategy() { var appConfig = new ModulesConfig(); _weatherApiUrl = $"{appConfig.OpenWeatherUrl}?appid={appConfig.OpenWeatherKey}&units=metric"; }
public async Task LoadModules(ContainerBuilder builder, IMvcBuilder mvcBuilder) { InvalidateModulesLock(); var modulesConfig = new ModulesConfig(_options.ModulesFile); var modulesLock = new ModulesLock(_options.ModulesLock); await modulesConfig.Reload(); await modulesLock.Reload(); var mazeProject = new MazeProject(_options, modulesConfig, modulesLock); _serviceCollection.AddSingleton <IModuleProject>(mazeProject); _serviceCollection.AddSingleton <PackageLockRequestManager>(); _serviceCollection.AddSingleton <IModulePackageManager, ModulePackageManager>(); _serviceCollection.AddSingleton <IVirtualModuleManager, VirtualModuleManager>(); var provider = _serviceCollection.BuildServiceProvider(); var logger = provider.GetService <ILogger <PackageInitialization> >(); var packageManager = provider.GetService <IModulePackageManager>(); logger.LogInformation("Initialize modules"); //initialize all core frameworks foreach (var framework in mazeProject.FrameworkLibraries.Keys.Where(x => x != mazeProject.Framework)) { logger.LogInformation("Initialize modules lock for {framework}", framework); var packages = await packageManager.GetPackagesLock(framework); await packageManager.EnsurePackagesInstalled(packages); } logger.LogInformation("Initialize modules lock for {framework}", mazeProject.Framework); var packageLock = await packageManager.GetPackagesLock(mazeProject.Framework); await packageManager.EnsurePackagesInstalled(packageLock); if (modulesConfig.Modules.Any()) { logger.LogDebug("{count} modules found", modulesConfig.Modules.Count); var loader = new ModuleLoader(mazeProject, _configuration, AssemblyLoadContext.Default); await loader.Load(modulesConfig.Modules, packageLock); loader.ModuleTypeMap.Configure(builder); foreach (var assembly in loader.ModuleTypeMap.Assemblies) { mvcBuilder.AddApplicationPart(assembly); } builder.RegisterInstance(new ModuleControllerProvider(loader.ModuleTypeMap)).AsImplementedInterfaces(); builder.RegisterMazeServices(cache => cache.BuildCache(loader.ModuleTypeMap.Controllers)); } else { logger.LogDebug("No modules found, startup empty"); builder.RegisterInstance(new ModuleControllerProvider()).AsImplementedInterfaces(); builder.RegisterMazeServices(cache => cache.BuildEmpty()); } builder.RegisterInstance(modulesConfig).AsImplementedInterfaces(); builder.RegisterInstance(modulesLock).AsImplementedInterfaces(); }