Beispiel #1
0
        /// <summary>
        /// Configures a Microsoft SQL Server Storage implementation of <see cref="IWebHookStore"/>
        /// which provides a persistent store for registered WebHooks used by the custom WebHooks module.
        /// </summary>
        /// <param name="config">The current <see cref="HttpConfiguration"/>config.</param>
        /// <param name="encryptData">Indicates whether the data should be encrypted using <see cref="IDataProtector"/> while persisted.</param>
        public static void InitializeCustomWebHooksSqlStorage(this HttpConfiguration config, bool encryptData)
        {
            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }

            WebHooksConfig.Initialize(config);

            ILogger            logger   = config.DependencyResolver.GetLogger();
            SettingsDictionary settings = config.DependencyResolver.GetSettings();

            // We explicitly set the DB initializer to null to avoid that an existing DB is initialized wrongly.
            Database.SetInitializer <WebHookStoreContext>(null);

            IWebHookStore store;

            if (encryptData)
            {
                IDataProtector protector = DataSecurity.GetDataProtector();
                store = new SqlWebHookStore(settings, protector, logger);
            }
            else
            {
                store = new SqlWebHookStore(settings, logger);
            }
            CustomServices.SetStore(store);
        }
Beispiel #2
0
        private void Form1_Load(object sender, EventArgs e)
        {
            //設定 Logger
            Logger = new TraceLogger();
            //設定 SQL 來存 WebHook 的資料
            Store = SqlWebHookStore.CreateStore(Logger);
            //Sender 使用 DataflowWebHookSender
            var webhookSender = new DataflowWebHookSender(Logger);

            Manager = new WebHookManager(Store, webhookSender, Logger);
        }
Beispiel #3
0
        /// <summary>
        /// Configures a Microsoft SQL Server Storage implementation of <see cref="IWebHookStore"/>
        /// which provides a persistent store for registered WebHooks used by the custom WebHooks module.
        /// </summary>
        /// <param name="config">The current <see cref="HttpConfiguration"/>config.</param>
        public static void InitializeCustomWebHooksSqlStorage(this HttpConfiguration config)
        {
            if (config == null)
            {
                throw new ArgumentNullException("config");
            }

            WebHooksConfig.Initialize(config);

            ILogger            logger   = config.DependencyResolver.GetLogger();
            SettingsDictionary settings = config.DependencyResolver.GetSettings();

            // We explicitly set the DB initializer to null to avoid that an existing DB is initialized wrongly.
            Database.SetInitializer <WebHookStoreContext>(null);

            IDataProtectionProvider provider  = GetDataProtectionProvider();
            IDataProtector          protector = provider.CreateProtector(Purpose);

            IWebHookStore store = new SqlWebHookStore(settings, protector, logger);

            CustomServices.SetStore(store);
        }
Beispiel #4
0
        public static void RegisterMef()
        {
            var container = ConfigureContainer();
            // use MEF for providing instances
            // RegistrationBuilder context = new RegistrationBuilder();

            // Install MEF dependency resolver for Web API
            var dependencyResolver = System.Web.Http.GlobalConfiguration.Configuration.DependencyResolver;

            System.Web.Http.GlobalConfiguration.Configuration.DependencyResolver = new MefDependencyResolver(container);
            //IDependencyScope
            //
            //https://weblog.west-wind.com/posts/2016/Dec/12/Loading-NET-Assemblies-out-of-Seperate-Folders
            Database.SetInitializer <WebHookStoreContext>(null);
            IDataProtector protector = Michal.Balador.Infrastructures.Security.DataSecurity.GetDataProtector(System.Configuration.ConfigurationManager.AppSettings["k"].ToString());
            ILogger        logger    = dependencyResolver.GetLogger();

            Microsoft.AspNet.WebHooks.Config.SettingsDictionary settings = dependencyResolver.GetSettings();

            string nameOrConnectionString = null;
            string schemaName             = null;
            string tableName = null;
            var    store     = new SqlWebHookStore(settings, protector, logger, nameOrConnectionString, schemaName, tableName);

            //it's singleton!!
            container.ComposeExportedValue <IWebHookStore>(store);
            var behaviors = new BehaviorItems <Behavior>();

            behaviors.Add(new ChangeMessageItemBehavior());
            behaviors.Add(new PostMessageItemBehavior());
            container.ComposeExportedValue(behaviors);

            //it's singleton!!
            //     var context = new BaladorContext();
            //  container.ComposeExportedValue<IBaladorContext>(context);
            //  container.ForType(typeof(ApplicationDbContext))
            //.Export(builder => builder.AsContractType(typeof(IUnitOfWork)))
            //.SetCreationPolicy(CreationPolicy.NonShared);
        }