public static void AddCorrelationId(this IHttpClientBuilder client)
        {
            if (client == null)
            {
                throw new ArgumentNullException(nameof(client));
            }

            client.AddInterceptor <CorrelationIdInterceptor>();
        }
示例#2
0
        public static IHttpClientBuilder AddPolicyInterceptor(
            this IHttpClientBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.Services.AddTransient <PollyInterceptor>();
            builder.AddInterceptor <PollyInterceptor>();

            return(builder);
        }
 public static IHttpClientBuilder EnableJWTPropagation(this IHttpClientBuilder builder)
 {
     builder.AddInterceptor <JWTPropagationInterceptor>();
     builder.Services.TryAddSingleton <JWTPropagationInterceptor>();
     builder.Services.AddHttpContextAccessor();
     //builder.Services.AddTransient<IConfigureOptions<GrpcClientFactoryOptions>>(services =>
     //{
     //    return new ConfigureNamedOptions<GrpcClientFactoryOptions>(builder.Name, options =>
     //    {
     //        options.Interceptors.Add(services.GetRequiredService<JWTPropagationInterceptor>());
     //    });
     //});
     return(builder);
 }
        /// <summary>
        /// Adds an additional interceptor from the dependency injection container for a gRPC client.
        /// </summary>
        /// <typeparam name="TInterceptor">The type of the <see cref="Interceptor"/>.</typeparam>
        /// <param name="builder">The <see cref="IHttpClientBuilder"/>.</param>
        /// <returns>An <see cref="IHttpClientBuilder"/> that can be used to configure the client.</returns>
        public static IHttpClientBuilder AddInterceptor <TInterceptor>(this IHttpClientBuilder builder)
            where TInterceptor : Interceptor
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.AddInterceptor(serviceProvider =>
            {
                return(serviceProvider.GetRequiredService <TInterceptor>());
            });

            return(builder);
        }
示例#5
0
        public static void AddExponentialBackoff(this IHttpClientBuilder client, int retryCount, int retryInterval = 0, bool retryForever = false)
        {
            if (client == null)
            {
                throw new ArgumentNullException(nameof(client));
            }

            client.AddInterceptor(services =>
            {
                var interceptor           = services.GetRequiredService <ExponentialBackoffInterceptor>();
                interceptor.RetryCount    = retryCount;
                interceptor.RetryInterval = retryInterval;
                interceptor.RetryForever  = retryForever;
                return(interceptor);
            });
        }
 /// <summary>
 /// Adds a delegate that will be used to create an additional inteceptor for a gRPC client.
 /// The interceptor scope is <see cref="InterceptorScope.Channel"/>.
 /// </summary>
 /// <param name="builder">The <see cref="IHttpClientBuilder"/>.</param>
 /// <param name="configureInvoker">A delegate that is used to create an <see cref="Interceptor"/>.</param>
 /// <returns>An <see cref="IHttpClientBuilder"/> that can be used to configure the client.</returns>
 public static IHttpClientBuilder AddInterceptor(this IHttpClientBuilder builder, Func <IServiceProvider, Interceptor> configureInvoker)
 {
     return(builder.AddInterceptor(InterceptorScope.Channel, configureInvoker));
 }
 /// <summary>
 /// Adds an additional interceptor from the dependency injection container for a gRPC client.
 /// The interceptor scope is <see cref="InterceptorScope.Channel"/>.
 /// </summary>
 /// <typeparam name="TInterceptor">The type of the <see cref="Interceptor"/>.</typeparam>
 /// <param name="builder">The <see cref="IHttpClientBuilder"/>.</param>
 /// <returns>An <see cref="IHttpClientBuilder"/> that can be used to configure the client.</returns>
 public static IHttpClientBuilder AddInterceptor <TInterceptor>(this IHttpClientBuilder builder)
     where TInterceptor : Interceptor
 {
     return(builder.AddInterceptor <TInterceptor>(InterceptorScope.Channel));
 }
示例#8
0
 /// <summary>
 /// Register interceptors for gRPC
 /// </summary>
 /// <param name="builder"></param>
 /// <returns></returns>
 public static IHttpClientBuilder AddgGRPCInterceptor(this IHttpClientBuilder builder)
 {
     builder.AddInterceptor <GRPCServiceInterceptor>();
     return(builder);
 }