示例#1
0
        public static IHttpClientBuilder AddIdentity(this IHttpClientBuilder clientBuilder, IIdentityConfig identityConfig, IOAuthTokenStrategy tokenStrategy)
        {
            clientBuilder.ConfigureHttpClient(httpClient =>
            {
                var tokenProvider = new OAuthTokenProvider(httpClient, identityConfig, tokenStrategy);

                httpClient.DefaultRequestHeaders.Add(
                    Constants.RequestAuthorizationHeader,
                    tokenProvider.GetAccessToken());
            });

            return(clientBuilder);
        }
        public static IHttpClientBuilder GenerateCorrelationId(this IHttpClientBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.ConfigureHttpClient((sp, client) =>
            {
                var correlationIdOptions  = sp.GetRequiredService <IOptions <CorrelationIdOptions> >().Value;
                var correlationIdProvider = sp.GetRequiredService <ICorrelationIdProvider>();
                client.DefaultRequestHeaders.Add(correlationIdOptions.RequestHeader, correlationIdProvider.GenerateCorrelationId(null));
            });

            return(builder);
        }
示例#3
0
        public static IHttpClientBuilder WithSimpleDiscovery(this IHttpClientBuilder builder)
        {
            builder.ConfigureHttpClient((provider, httpClient) =>
            {
                var registry = provider.GetRequiredService <IServiceRegistry>();

                var serviceEndpoint = registry.GetService(builder.Name);

                if (string.IsNullOrEmpty(serviceEndpoint))
                {
                    throw new InvalidOperationException($"The {builder.Name} service has not been registered.");
                }

                httpClient.BaseAddress = new Uri(serviceEndpoint);
            });

            return(builder);
        }