44using System . Net . WebSockets ;
55using System . Threading ;
66using BepInEx ;
7+ using BepInEx . Bootstrap ;
78using Microsoft . Extensions . DependencyInjection ;
89using Microsoft . Extensions . Hosting ;
910using Serilog ;
@@ -83,6 +84,9 @@ private void ConfigureServices(IServiceCollection services)
8384 services . AddSingleton ( Config ) ;
8485 services . AddSingleton ( Logger ) ;
8586 services . AddSingleton ( Info ) ;
87+ services . AddSingleton ( new NetworkUserAgent (
88+ MyPluginInfo . PLUGIN_VERSION ,
89+ Chainloader . PluginInfos [ "ZeepSDK" ] . Metadata . Version . ToString ( ) ) ) ;
8690 services . AddSingleton < IHostLifetime , NoopHostLifetime > ( ) ;
8791 services . AddMemoryCache ( ) ;
8892 services . AddEagerService < SpainRoutingService > ( ) ;
@@ -153,17 +157,22 @@ private void ConfigureServices(IServiceCollection services)
153157 services . AddTransient < V7Reader > ( ) ;
154158 services . AddSingleton < ApiHttpClient > ( ) ;
155159 services . AddHttpClient ( ) ;
156- services . AddHttpClient ( SpainRoutingService . TraceClientKey , client =>
160+ services . AddHttpClient ( SpainRoutingService . TraceClientKey , ( provider , client ) =>
157161 {
162+ provider . GetRequiredService < NetworkUserAgent > ( ) . Apply ( client ) ;
158163 client . BaseAddress = CloudflareTraceRequest . BaseAddress ;
159164 client . Timeout = CloudflareTraceRequest . Timeout ;
160165 } ) ;
161- services . AddHttpClient ( AlternativeDomainFallbackHandler . TransportClientKey , client =>
162- {
163- client . Timeout = AlternativeDomainFallbackHandler . RequestTimeout ;
164- } ) ;
165- services . AddHttpClient ( GhostRepository . ClientKey , client =>
166+ services . AddHttpClient (
167+ AlternativeDomainFallbackHandler . TransportClientKey ,
168+ ( provider , client ) =>
169+ {
170+ provider . GetRequiredService < NetworkUserAgent > ( ) . Apply ( client ) ;
171+ client . Timeout = AlternativeDomainFallbackHandler . RequestTimeout ;
172+ } ) ;
173+ services . AddHttpClient ( GhostRepository . ClientKey , ( provider , client ) =>
166174 {
175+ provider . GetRequiredService < NetworkUserAgent > ( ) . Apply ( client ) ;
167176 client . Timeout = TimeSpan . FromSeconds ( 60 ) ;
168177 } ) ;
169178 services . AddSingleton ( provider =>
@@ -183,6 +192,7 @@ private void ConfigureServices(IServiceCollection services)
183192 routingService . SelectedBackendUrl ,
184193 "Backend API URL" ) ;
185194 client . Timeout = Timeout . InfiniteTimeSpan ;
195+ provider . GetRequiredService < NetworkUserAgent > ( ) . Apply ( client ) ;
186196 AddDefaultHeaders ( client ) ;
187197 } )
188198 . AddHttpMessageHandler ( provider => new AlternativeDomainFallbackHandler (
@@ -199,6 +209,7 @@ private void ConfigureServices(IServiceCollection services)
199209 routingService . SelectedGraphQLUrl ,
200210 "GraphQL URL" ) ;
201211 client . Timeout = Timeout . InfiniteTimeSpan ;
212+ provider . GetRequiredService < NetworkUserAgent > ( ) . Apply ( client ) ;
202213 AddDefaultHeaders ( client ) ;
203214 } ,
204215 clientBuilder => clientBuilder . AddHttpMessageHandler ( provider =>
@@ -215,7 +226,11 @@ private void ConfigureServices(IServiceCollection services)
215226 "GraphQL URL" ) ;
216227 client . Uri = GraphqlWebSocketUri . FromHttp ( graphQlUri ) ;
217228 if ( client . Socket is ClientWebSocket socket )
229+ {
230+ provider . GetRequiredService < NetworkUserAgent > ( )
231+ . Apply ( ( name , value ) => socket . Options . SetRequestHeader ( name , value ) ) ;
218232 AddDefaultHeaders ( ( name , value ) => socket . Options . SetRequestHeader ( name , value ) ) ;
233+ }
219234 } ) ;
220235 }
221236
0 commit comments