Exemplo n.º 1
0
        public override void Configure(Container container)
        {
            var quartzFeature = new QuartzFeature();

            // create a simple job trigger to repeat every minute
            quartzFeature.RegisterJob <MyJob>(
                trigger =>
                trigger.WithSimpleSchedule(s =>
                                           s.WithInterval(TimeSpan.FromSeconds(3))
                                           .RepeatForever()
                                           )
                .Build()
                );

            // register the plugin
            Plugins.Add(quartzFeature);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Application specific configuration
        /// This method should initialize any IoC resources utilized by your web service classes.
        /// </summary>
        /// <param name="container"></param>
        public override void Configure(Container container)
        {
            SetConfig(new HostConfig {
                DebugMode = AppSettings.Get("DebugMode", Env.IsWindows),
            });

            // override config
            var quartzConfig = ConfigureQuartz();

            // register plugin, will scan assemblies by default for jobs
            var quartzFeature = new QuartzFeature()
            {
                RequiredRoles = new[] { "Admin" }
            };

            Plugins.Add(quartzFeature);
            Plugins.Add(new PostmanFeature());

            // var inMemoryAuthRepository = new InMemoryAuthRepository();
            // inMemoryAuthRepository.CreateUserAuth(
            //     new UserAuth() {UserName = "******", Roles = new List<string> {"Admin"}}, "test");
            // Register<IAuthRepository>(inMemoryAuthRepository);
            //
            // Plugins.Add(new AuthFeature(
            //     () => new AuthUserSession(),
            //     new IAuthProvider[] {new BasicAuthProvider(),}));

            // or you can register the plugin with custom config source
            Plugins.AddIfNotExists(new QuartzFeature {
                Config = quartzConfig
            });

            // or you can register plugin with custom job assemblies
            Plugins.AddIfNotExists(new QuartzFeature
            {
                ScanAppHostAssemblies = false,
                JobAssemblies         = new[] { typeof(HelloJob).Assembly, typeof(AppHost).Assembly }
            });

            // now you can setup a job to run with a trigger
            quartzFeature.RegisterJob <HelloJob>(
                trigger =>
                trigger.WithSimpleSchedule(s =>
                                           s.WithInterval(TimeSpan.FromMinutes(1))
                                           .RepeatForever()
                                           )
                .Build()
                );

            // or setup a job to run with a trigger and some data
            quartzFeature.RegisterJob <HelloJob>(
                trigger =>
                trigger.WithSimpleSchedule(s =>
                                           s.WithIntervalInMinutes(1)
                                           .WithRepeatCount(10)
                                           )
                .Build(),
                builder => builder.UsingJobData("Name", "Bob").Build()
                );

            // cron schedule trigger
            var cronTrigger = TriggerBuilder.Create()
                              .WithCronSchedule("0 0 0/1 1/1 * ? *")
                              .Build();

            quartzFeature.RegisterJob <HelloJob>(cronTrigger);

            // you can setup jobs with data and triggers however you like
            // this lets create a trigger with our preferred identity
            var everyHourTrigger = TriggerBuilder.Create()
                                   .WithDescription("This is my trigger!")
                                   .WithIdentity("everyHour", "Continuous")
                                   .WithDailyTimeIntervalSchedule(x => x.OnMondayThroughFriday().WithIntervalInHours(1))
                                   .Build();

            var jobData = JobBuilder.Create <HelloJob>().UsingJobData("Name", "Sharon").Build();

            quartzFeature.RegisterJob <HelloJob>(everyHourTrigger);
            quartzFeature.RegisterJob <HelloJob>(everyHourTrigger, jobData);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Application specific configuration
        /// This method should initialize any IoC resources utilized by your web service classes.
        /// </summary>
        /// <param name="container"></param>
        public override void Configure(Container container)
        {
            SetConfig(new HostConfig {
                DebugMode = AppSettings.Get("DebugMode", Env.IsWindows),
            });

            // override config
            var quartzConfig = ConfigureQuartz();

            // register plugin, will scan assemblies by default for jobs
            var quartzFeature = new QuartzFeature();

            Plugins.Add(quartzFeature);
            Plugins.Add(new PostmanFeature());

            // or you can register the plugin with custom config source
            Plugins.AddIfNotExists(new QuartzFeature {
                Config = quartzConfig
            });

            // or you can register plugin with custom job assemblies
            Plugins.AddIfNotExists(new QuartzFeature
            {
                ScanAppHostAssemblies = false,
                JobAssemblies         = new[] { typeof(HelloJob).Assembly, typeof(AppHost).Assembly }
            });

            // now you can setup a job to run with a trigger
            quartzFeature.RegisterJob <HelloJob>(
                trigger =>
                trigger.WithSimpleSchedule(s =>
                                           s.WithInterval(TimeSpan.FromMinutes(1))
                                           .RepeatForever()
                                           )
                .Build()
                );

            // or setup a job to run with a trigger and some data
            quartzFeature.RegisterJob <HelloJob>(
                trigger =>
                trigger.WithSimpleSchedule(s =>
                                           s.WithIntervalInMinutes(1)
                                           .WithRepeatCount(10)
                                           )
                .Build(),
                builder => builder.UsingJobData("Name", "Bob").Build()
                );

            // you can setup jobs with data and triggers however you like
            // lets create a trigger with our preferred identity
            var everyHourTrigger = TriggerBuilder.Create()
                                   .WithDescription("This is my trigger!")
                                   .WithIdentity("everyHour", "Continuous")
                                   .WithCronSchedule("0 0 0/1 1/1 * ? *")
                                   .Build();

            var jobData = JobBuilder.Create <HelloJob>().UsingJobData("Name", "Sharon").Build();

            quartzFeature.RegisterJob <HelloJob>(everyHourTrigger);
            quartzFeature.RegisterJob <HelloJob>(everyHourTrigger, jobData);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Application specific configuration
        /// This method should initialize any IoC resources utilized by your web service classes.
        /// </summary>
        public override void Configure(Container container)
        {
            SetConfig(new HostConfig
            {
#if DEBUG
                DebugMode           = true,
                WebHostPhysicalPath = Path.GetFullPath(Path.Combine("~".MapServerPath(), "..", "..")),
#else
                DebugMode = AppSettings.Get("DebugMode", Env.IsWindows),
#endif

                /*
                 * Consentiamo l'estensione "json" per poter rendere eventualmente
                 * accessibili via web gli UrbanDataset registrati su file system.
                 */
                AllowFileExtensions = { "json" },
            });

            AppDomain.CurrentDomain.SetData("DataDirectory", Path.Combine(Config.WebHostPhysicalPath, "App_Data"));

            /*
             * Configuriamo il database SQL Server predefinito e registriamo
             * una connessione opzionale SQLite denominata "Local".
             */
            var defaultDbConn = AppSettings.GetConnectionString("DefaultConnection")
                                ?? @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|aspnetdb.mdf;Integrated Security=True";

            var dbFactory = new OrmLiteConnectionFactory(defaultDbConn, SqlServer2012Dialect.Provider);
            dbFactory.RegisterConnection("Local", Path.Combine(Constants.ApplicationDataFolder, "db.sqlite"), SqliteDialect.Provider);
            container.Register <IDbConnectionFactory>(dbFactory);

            // Wrap all code in using statement to not forget about using db.Close()
            using (var db = dbFactory.Open("Local"))
            {
                db.CreateTableIfNotExists <PushResponseLog>();
                db.CreateTableIfNotExists <Collaboration>();
            }

            CsvConfig.ItemSeperatorString = CultureInfo.CurrentCulture.TextInfo.ListSeparator;

            JsConfig.SkipDateTimeConversion  = true;
            JsConfig <DateTime> .SerializeFn = dateTime => dateTime.ToString(DateTimeSerializer.DateTimeFormatSecondsNoOffset);

            container.RegisterAs <FileScanJob, IJob>(); // TODO: Come registrare gli altri "IJob"?

            var quartzConfig  = ConfigureQuartz();
            var quartzFeature = new QuartzFeature {
                Config = quartzConfig
            };

            Plugins.Add(quartzFeature);
            Plugins.Add(new RazorFormat());
            Plugins.Add(new AdminFeature());
            Plugins.Add(new OpenApiFeature());

            /*
             * I validatori (ad esempio "UpdateDeviceValidator") sono definiti
             * nell'assembly contenente le implementazioni dei servizi web.
             */
            Plugins.Add(new ValidationFeature());
            Plugins.Add(new AutoQueryFeature
            {
                IncludeTotal = true,
            });

            /*
             * Per utilizzare AutoQuery CRUD implementiamo una mappatura con
             * l'API Auto Mapping Populator incorporata di ServiceStack.
             */
            AutoMapping.RegisterPopulator((Dictionary <string, object> target, UpdateDevice source) =>
            {
                target[nameof(Device.Location)] = source.ConvertTo <LocationInfo>();
            });
        }