public FabioMessageHandler(FabioOptions options, string serviceName = null) { if (string.IsNullOrWhiteSpace(options.Url)) { throw new InvalidOperationException("Fabio URL was not provided."); } _options = options; _servicePath = string.IsNullOrWhiteSpace(serviceName) ? string.Empty : $"{serviceName}/"; }
private static IConveyBuilder AddFabio(this IConveyBuilder builder, FabioOptions fabioOptions, HttpClientOptions httpClientOptions, Action <IConveyBuilder> registerConsul) { registerConsul(builder); builder.Services.AddSingleton(fabioOptions); if (!fabioOptions.Enabled || !builder.TryRegister(RegistryName)) { return(builder); } if (httpClientOptions.Type?.ToLowerInvariant() == "fabio") { builder.Services.AddTransient <FabioMessageHandler>(); builder.Services.AddHttpClient <IFabioHttpClient, FabioHttpClient>("fabio-http") .AddHttpMessageHandler <FabioMessageHandler>(); builder.RemoveHttpClient(); builder.Services.AddHttpClient <IHttpClient, FabioHttpClient>("fabio") .AddHttpMessageHandler <FabioMessageHandler>(); } using var serviceProvider = builder.Services.BuildServiceProvider(); var registration = serviceProvider.GetRequiredService <ServiceRegistration>(); var tags = GetFabioTags(registration.Name, fabioOptions.Service); if (registration.Tags is null) { registration.Tags = tags; } else { registration.Tags.AddRange(tags); } builder.Services.UpdateConsulRegistration(registration); return(builder); }
public static IBioWorldBuilder AddServiceClient <T>(this IBioWorldBuilder builder, string serviceName, RestEaseOptions options, ConsulOptions consulOptions, FabioOptions fabioOptions, HttpClientOptions httpClientOptions) where T : class => builder.AddServiceClient <T>(serviceName, options, b => b.AddFabio(fabioOptions, consulOptions, httpClientOptions));
public static IConveyBuilder AddFabio(this IConveyBuilder builder, FabioOptions fabioOptions, ConsulOptions consulOptions, HttpClientOptions httpClientOptions) => builder.AddFabio(fabioOptions, httpClientOptions, b => b.AddConsul(consulOptions, httpClientOptions));