1- using System . Diagnostics . CodeAnalysis ;
2- using Catglobe . CgScript . Common ;
1+ using Catglobe . CgScript . Common ;
32using Microsoft . Extensions . Configuration ;
43using Microsoft . Extensions . DependencyInjection ;
54using Microsoft . Extensions . Options ;
6- using OpenTelemetry . Trace ;
75
86namespace Catglobe . CgScript . Runtime ;
97
@@ -15,46 +13,40 @@ public static class HostExtensions
1513 /// <summary>
1614 /// Add CgScript support
1715 /// </summary>
18- public static IServiceCollection AddCgScript ( this IServiceCollection services , bool isDevelopment , Action < CgScriptOptions > ? configurator = null )
16+ public static IServiceCollection AddCgScript ( this IServiceCollection services , bool isDevelopment , string nameOfHttpClient , Action < CgScriptOptions > ? configurator = null )
1917 {
2018 if ( configurator is not null ) services . Configure ( configurator ) ;
21- return AddCommonCgScript ( services , isDevelopment ) ;
19+ return AddCommonCgScript ( services , isDevelopment , nameOfHttpClient ) ;
2220 }
2321 /// <summary>
2422 /// Add CgScript support
2523 /// </summary>
26- public static IServiceCollection AddCgScript ( this IServiceCollection services , IConfiguration namedConfigurationSection , bool isDevelopment )
24+ public static IServiceCollection AddCgScript ( this IServiceCollection services , IConfiguration namedConfigurationSection , bool isDevelopment , string nameOfHttpClient )
2725 {
2826 services . Configure < CgScriptOptions > ( namedConfigurationSection ) ;
29- return AddCommonCgScript ( services , isDevelopment ) ;
27+ return AddCommonCgScript ( services , isDevelopment , nameOfHttpClient ) ;
3028 }
3129
32- private static IServiceCollection AddCommonCgScript ( IServiceCollection services , bool isDevelopment )
30+ private static IServiceCollection AddCommonCgScript ( IServiceCollection services , bool isDevelopment , string nameOfHttpClient )
3331 {
3432 services . AddHttpContextAccessor ( ) ;
35- services . AddHttpClient < IScriptMapping , ScriptMapping > ( ( sp , httpClient ) => {
36- var site = sp . GetRequiredService < IOptions < CgScriptOptions > > ( ) . Value . Site ;
37- httpClient . BaseAddress = new ( site + "api/CgScriptDeployment/" ) ;
38- } ) ;
33+ services . AddHttpClient < IScriptMapping , ScriptMapping > ( nameOfHttpClient ) ;
3934
40- services . AddScoped < CgScriptAuthHandler > ( ) ;
41- Action < IServiceProvider , HttpClient > configureClient = ( sp , httpClient ) => {
42- var site = sp . GetRequiredService < IOptions < CgScriptOptions > > ( ) . Value . Site ;
43- httpClient . BaseAddress = new ( site + "api/CgScript/" ) ;
44- } ;
45- ( isDevelopment
46- ? services . AddHttpClient < ICgScriptApiClient , DevelopmentModeCgScriptApiClient > ( configureClient )
47- : services . AddHttpClient < ICgScriptApiClient , CgScriptApiClient > ( configureClient ) )
48- . AddHttpMessageHandler < CgScriptAuthHandler > ( ) ;
35+ if ( isDevelopment )
36+ services . AddHttpClient < ICgScriptApiClient , DevelopmentModeCgScriptApiClient > ( nameOfHttpClient ) ;
37+ else
38+ services . AddHttpClient < ICgScriptApiClient , CgScriptApiClient > ( nameOfHttpClient ) ;
4939
40+ #pragma warning disable EXTEXP0001
5041 ( isDevelopment
51- ? services . AddHttpClient < ILongRunningCgScriptApiClient , DevelopmentModeCgScriptApiClient > ( configureClient )
52- : services . AddHttpClient < ILongRunningCgScriptApiClient , CgScriptApiClient > ( configureClient ) )
53- . AddHttpMessageHandler < CgScriptAuthHandler > ( )
42+ ? services . AddHttpClient < ILongRunningCgScriptApiClient , DevelopmentModeCgScriptApiClient > ( nameOfHttpClient )
43+ : services . AddHttpClient < ILongRunningCgScriptApiClient , CgScriptApiClient > ( nameOfHttpClient ) )
44+ . RemoveAllResilienceHandlers ( )
45+ #pragma warning restore EXTEXP0001
5446 . AddStandardResilienceHandler ( o => {
5547 o . AttemptTimeout . Timeout = TimeSpan . FromMinutes ( 30 ) ;
5648 o . TotalRequestTimeout . Timeout = TimeSpan . FromMinutes ( 90 ) ;
57- o . CircuitBreaker . SamplingDuration = TimeSpan . FromMinutes ( 60 ) ;
49+ o . CircuitBreaker . SamplingDuration = TimeSpan . FromMinutes ( 90 ) ;
5850 } ) ;
5951 return services ;
6052 }
0 commit comments