public static IAppBuilder UsePingOwin(this IAppBuilder appBuilder, PingOwinOptions options = null) { options = options ?? new PingOwinOptions(); var connectionString = $"Data Source={options.PathToDb}pingowin.db;Version=3;Pooling=True;Max Pool Size=100;"; var databaseSettings = new DbSettings(connectionString); var migrator = new Migrator(databaseSettings); migrator.Migrate(); var conf = new NancyOptions { Bootstrapper = new PingOwinWebBootstrapper(databaseSettings) }; appBuilder.UseNancy(conf); var pingConfiguration = new PingConfiguration { RequestTimeOut = new TimeSpan(0, 0, 0, 0, options.RequestTimeOut), WarnThreshold = options.WarnThreshold }; var notifierType = NotifierType.Konsole; var slackConfig = new SlackConfig(); var notifierFactory = new NotifierFactory(notifierType, slackConfig); var transformerFactory = new TransformerFactory(notifierType, Level.OK); var processor = IoCFactory.CreateProcessor(pingConfiguration, databaseSettings, notifierFactory, transformerFactory); var serviceRunner = new ServiceRunner(new ServiceRunnerOptions { PingIntervalInMillis = options.PingIntervalInMillis, RunBackgroundThread = options.StartService }, processor); serviceRunner.StartBackgroundThread(); return(appBuilder); }