/// <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)); }
/// <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)); }