コード例 #1
0
        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);
        }
コード例 #2
0
        /// <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));
        }
コード例 #3
0
        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());
        }