public void TestConnectionString(string path, string connectionStringCode) { string workingDirectory = Directory.GetCurrentDirectory(); JsonConfigurationService jsonConfiguration = new JsonConfigurationService(); var result = jsonConfiguration.GetDbConnection(path, connectionStringCode); Assert.AreEqual(result.Code, connectionStringCode); }
/// <summary> /// Configuration. /// </summary> /// <param name="app"></param> public void Configuration(IAppBuilder app) { // Load the configuration IConfigurationService configurationService = new JsonConfigurationService($"{Environment.CurrentDirectory}/config.json"); string hangfireConnectionString = ConfigurationManager.ConnectionStrings["Hangfire"].ConnectionString; Log.Information("Hangfire connection string {hangfireConnection}", hangfireConnectionString); // Autofac API container var apiContainerBuilder = new ContainerBuilder(); apiContainerBuilder.RegisterApiControllers(Assembly.GetExecutingAssembly()); apiContainerBuilder.RegisterType <SendDocumentsJob>(); apiContainerBuilder.RegisterType <StoreAndForwardDbContext>().AsSelf() .OnActivating(d => Log.Information("OnActivating - StoreAndForwardDbContext")) .OnRelease(d => // Uses Autofac automatic disposal for the DB context { Log.Information("OnRelease - StoreAndForwardDbContext"); d.Dispose(); }); apiContainerBuilder.RegisterType <QueueManager>().As <IQueueManager>() .WithParameter("retryLimit", configurationService.RetryLimit); apiContainerBuilder.RegisterType <DataStore>().As <IDataStore>(); apiContainerBuilder.RegisterType <SignalrNotificationService>().As <INotificationService>(); apiContainerBuilder.RegisterType <CdaPackageService>().As <ICdaPackageService>(); apiContainerBuilder.RegisterType <MhrDocumentUploadClient>().As <IMhrDocumentUploadClient>(); apiContainerBuilder.RegisterType <MhrDocumentUploadClient>().As <IMhrDocumentUploadClient>() .WithParameter("endpoint", configurationService.UploadDocumentEndpoint) .WithParameter("certificate", configurationService.Certificate) .WithParameter("facilityType", configurationService.HealthcareFacility) .WithParameter("practiceSetting", configurationService.PracticeSetting) .WithParameter("clientSystem", configurationService.ClientSystemType) .WithParameter("productInfo", configurationService.ProductInfo); // HTTP configuration var httpConfiguration = new HttpConfiguration(); httpConfiguration.MapHttpAttributeRoutes(); httpConfiguration.Formatters.Remove(httpConfiguration.Formatters.XmlFormatter); httpConfiguration.Formatters.Add(httpConfiguration.Formatters.JsonFormatter); httpConfiguration.Services.Replace(typeof(IExceptionHandler), new StoreAndForwardExceptionHandler()); //config.EnableSystemDiagnosticsTracing(); SystemDiagnosticsTraceWriter diagnosticsTraceWriter = new SystemDiagnosticsTraceWriter { MinimumLevel = TraceLevel.Off, IsVerbose = true }; httpConfiguration.Services.Replace(typeof(ITraceWriter), (object)diagnosticsTraceWriter); httpConfiguration.MessageHandlers.Add(new SerilogLoggingMessageHandler()); // OpenAPI httpConfiguration.EnableSwagger(c => { c.SingleApiVersion("v1", "Store and Forward API"); c.IncludeXmlComments(GetXmlCommentsPath()); c.RootUrl(r => $"{r.RequestUri.Scheme}://{r.RequestUri.Authority}/storeandforward"); }) .EnableSwaggerUi(c => { c.DisableValidator(); // Prevent Swashbuckle using external validation }); var apiContainer = apiContainerBuilder.Build(); httpConfiguration.DependencyResolver = new AutofacWebApiDependencyResolver(apiContainer); // Hangfire setup GlobalConfiguration.Configuration .UseSqlServerStorage(hangfireConnectionString) .UseAutofacActivator(apiContainer); // Setup CORS var corsPolicy = new CorsPolicy { AllowAnyMethod = true, AllowAnyHeader = true, AllowAnyOrigin = true, SupportsCredentials = false }; var corsOptions = new CorsOptions { PolicyProvider = new CorsPolicyProvider { PolicyResolver = context => Task.FromResult(corsPolicy) } }; app.UseCors(corsOptions); // Add SignalR app.MapSignalR(); app.UseHangfireDashboard("/hangfire", new DashboardOptions { // Allow all IPs to connect Authorization = new[] { new DebugHangfireDashboardAuthorizationFilter() } }); app.UseHangfireServer(); // Web API app.UseAutofacMiddleware(apiContainer); app.UseAutofacWebApi(httpConfiguration); app.UseWebApi(httpConfiguration); // Create a recurring job RecurringJob.AddOrUpdate <SendDocumentsJob>(c => c.Execute(), Cron.MinuteInterval(configurationService.SendIntervalInMinutes)); }
private static IContainer ConfigurationApplication() { var cb = new ContainerBuilder(); var configs = JsonConfigurationService.Create() .WithVaultRoot(SafeEnvironment.Get("_MMP_VR")) .WithVaultKey(SafeEnvironment.Get("_MMP_VK")) .GetConfiguratonInstances( new[] { typeof(AppSettings.Configuration), typeof(Model.Dépôt.Mlp.Configuration) }); var mainConfig = configs.OfType <AppSettings.Configuration>().FirstOrDefault() ?? throw new Exception("Impossible de charger la configuration de l'application depuis le sous dossier \"Config\""); var mlpConfig = configs.OfType <Model.Dépôt.Mlp.Configuration>().FirstOrDefault() ?? throw new Exception("Impossible de charger la configuration MLP depuis le sous dossier \"Config\""); var bdiCsBuilder = new MySqlConnectionStringBuilder { Server = "bdidata.multimediapress.local", UserID = mainConfig.UtilisateurBdi, Password = mainConfig.MotDePasseBdi, Database = mainConfig.DatabaseBdi }; cb.RegisterType <DépôtParutionsBdi>().As <IDépôtParutions>() .WithParameter("connectionString", bdiCsBuilder.ConnectionString) .WithParameter("providerName", "MySql.Data.MySqlClient") .SingleInstance(); cb.RegisterType <DépôtCabMlp>().As <IDépôtCabMlp>() .WithParameter("configuration", mlpConfig) .SingleInstance(); cb.RegisterType <DépôtCabNmpp>().As <IDépôtCabNmpp>() .SingleInstance(); cb.RegisterType <DépôtCabPao>().As <IDépôtCabPao>() .WithParameter("racinePao", mainConfig.RacinePao) .SingleInstance(); cb.RegisterType <Cab>().As <ICab>(); cb.RegisterType <AnomalieCab>().As <IAnomalieCab>(); cb.RegisterType <AnomalieCabFactory>().As <IAnomalieCabFactory>() .SingleInstance(); cb.RegisterType <CabFactory>().As <ICabFactory>() .SingleInstance(); cb.RegisterType <ComparateurCabParution>().As <IComparateurCabParution>() .SingleInstance(); cb.RegisterType <InfosOpérationDépôt>().As <IInfosOpérationDépôt>(); cb.RegisterType <InfosOpérationDépôtFactory>().As <IInfosOpérationDépôtFactory>() .SingleInstance(); cb.RegisterType <ConvertisseurEpsVersTiff>().As <IConvertisseurEpsVersTiff>() .SingleInstance(); cb.RegisterType <TaskObserver.TaskObserver>().As <ITaskObserver>(); cb.RegisterType <TaskObserverFactory>().As <ITaskObserverFactory>() .SingleInstance(); cb.RegisterType <GénérateurRapportMail>().As <IGénérateurRapportMail>() .SingleInstance(); cb.RegisterType <Mailer>().As <IMailer>() .WithParameter("from", mainConfig.AdresseMailRapportFrom) .WithParameter("fromLabel", "Rapport Cabs Auto") .WithParameter("to", mainConfig.AdresseMailRapportTo) .WithParameter("toLabel", "Infos Cabs") .WithParameter("server", mainConfig.ServeurSmtp) .WithParameter("port", mainConfig.PortSmtp) .WithParameter("ssl", mainConfig.SslSmtp) .WithParameter("authentication", mainConfig.AutentificationSmtp) .WithParameter("user", mainConfig.UtilisateurSmtp) .WithParameter("password", mainConfig.MotDePasseSmtp) .SingleInstance(); cb.RegisterType <OpérateurPrincipal>().As <IOpérateurPrincipal>() .SingleInstance(); cb.Register(c => new SélectionViewModel(c.Resolve <IDépôtParutions>()) { Numéro = 1 }); cb.RegisterType <OptionsViewModel>(); cb.RegisterType <RapportViewModel>(); cb.RegisterType <MainViewModel>() .WithParameter("trancheDhlMin", DateTime.Now.AddDays(mainConfig.TrancheDhlInf)) .WithParameter("trancheDhlMax", DateTime.Now.AddDays(mainConfig.TrancheDhlSup)); cb.RegisterType <MainWindow>(); return(cb.Build()); }