Beispiel #1
0
        /// <summary>
        /// Add WebHook configuration and services to the specified <paramref name="builder"/>.
        /// </summary>
        /// <param name="builder">The <see cref="IMvcCoreBuilder" /> to configure.</param>
        /// <returns>The <paramref name="builder"/>.</returns>
        public static IMvcCoreBuilder AddWebHooks(this IMvcCoreBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            var services = builder.Services;

            services
            .TryAddEnumerable(ServiceDescriptor.Transient <IApplicationModelProvider, WebHookMetadataProvider>());
            services
            .TryAddEnumerable(ServiceDescriptor.Transient <IApplicationModelProvider, WebHookModelBindingProvider>());
            services
            .TryAddEnumerable(ServiceDescriptor.Transient <IApplicationModelProvider, WebHookRoutingProvider>());

            services.TryAddSingleton <WebHookReceiverExistsConstraint>();
            services.TryAddSingleton <WebHookMultipleEventMapperConstraint>();

            services.TryAddSingleton <IWebHookReceiverConfig, WebHookReceiverConfig>();
            services.TryAddSingleton <WebHookReceiverExistsFilter>();

            // ??? Does WebHookExceptionFilter need a non-default Order too?
            return(builder
                   .AddSingletonFilter <WebHookExceptionFilter>()
                   .AddSingletonFilter <WebHookGetResponseFilter>(WebHookGetResponseFilter.Order)
                   .AddSingletonFilter <WebHookPingResponseFilter>(WebHookPingResponseFilter.Order)
                   .AddSingletonFilter <WebHookVerifyCodeFilter>(WebHookSecurityFilter.Order)
                   .AddSingletonFilter <WebHookVerifyMethodFilter>(WebHookVerifyMethodFilter.Order)
                   .AddSingletonFilter <WebHookVerifyRequiredValueFilter>(WebHookVerifyRequiredValueFilter.Order));
        }
Beispiel #2
0
        /// <summary>
        /// Add <typeparamref name="TFilter"/> as a singleton filter. Register <typeparamref name="TFilter"/> as a
        /// singleton service and add it to <see cref="AspNetCore.Mvc.MvcOptions.Filters"/>.
        /// </summary>
        /// <typeparam name="TFilter">The <see cref="IFilterMetadata"/> type to add.</typeparam>
        /// <param name="builder">The <see cref="IMvcCoreBuilder" /> to configure.</param>
        /// <returns>The <paramref name="builder"/>.</returns>
        /// <remarks>This method may be called multiple times for the same <typeparamref name="TFilter"/>.</remarks>
        public static IMvcCoreBuilder AddSingletonFilter <TFilter>(this IMvcCoreBuilder builder)
            where TFilter : class, IFilterMetadata
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            return(builder.AddSingletonFilter <TFilter>(order: 0));
        }