@@ -10,30 +10,48 @@ namespace Catglobe.CgScript.Runtime;
1010
1111internal abstract class ApiClientBase ( HttpClient httpClient , ILogger < ICgScriptApiClient > logger ) : ICgScriptApiClient , ILongRunningCgScriptApiClient
1212{
13- public async Task < ScriptResult < TR > > Execute < TP , TR > ( string scriptName , TP parameter , JsonTypeInfo < TP > callJsonTypeInfo , JsonTypeInfo < TR > resultJsonTypeInfo , CancellationToken cancellationToken )
13+ public Task < ScriptResult < TR > > Execute < TP , TR > ( string scriptName , TP parameter , JsonTypeInfo < TP > callJsonTypeInfo , JsonTypeInfo < TR > resultJsonTypeInfo , CancellationToken cancellationToken ) =>
14+ ExecuteCustomOptions ( scriptName , parameter , callJsonTypeInfo , resultJsonTypeInfo , null , cancellationToken ) ;
15+
16+ public async Task < ScriptResult < TR > > ExecuteCustomOptions < TP , TR > ( string scriptName , TP parameter , JsonTypeInfo < TP > callJsonTypeInfo , JsonTypeInfo < TR > resultJsonTypeInfo ,
17+ Action < HttpRequestOptions > ? applyOptions , CancellationToken cancellationToken )
1418 {
15- using var activity = CgScriptTelemetry . Source . StartActivity ( scriptName ) ;
16- var path = await GetPath ( scriptName ) ;
17- var jsonContent = await GetJsonContent ( scriptName , parameter , callJsonTypeInfo ) ;
18- var httpResponseMessage = await httpClient . PostAsync ( path , jsonContent , cancellationToken ) . ConfigureAwait ( false ) ;
19+ using var activity = CgScriptTelemetry . Source . StartActivity ( scriptName ) ;
20+ var path = await GetPath ( scriptName ) ;
21+ var jsonContent = await GetJsonContent ( scriptName , parameter , callJsonTypeInfo ) ;
22+ var request = new HttpRequestMessage ( HttpMethod . Post , path ) { Content = jsonContent , } ;
23+ applyOptions ? . Invoke ( request . Options ) ;
24+ var httpResponseMessage = await httpClient . SendAsync ( request , cancellationToken ) . ConfigureAwait ( false ) ;
1925 return await ParseResponse ( httpResponseMessage , resultJsonTypeInfo , cancellationToken ) ;
2026 }
2127
22- public async Task < ScriptResult < TR > > ExecuteArray < TP , TR > ( string scriptName , TP parameter , JsonTypeInfo < TP > callJsonTypeInfo , JsonTypeInfo < TR > resultJsonTypeInfo , CancellationToken cancellationToken )
28+ public Task < ScriptResult < TR > > ExecuteArray < TP , TR > ( string scriptName , TP parameter , JsonTypeInfo < TP > callJsonTypeInfo , JsonTypeInfo < TR > resultJsonTypeInfo , CancellationToken cancellationToken ) =>
29+ ExecuteArrayCustomOptions ( scriptName , parameter , callJsonTypeInfo , resultJsonTypeInfo , null , cancellationToken ) ;
30+
31+ public async Task < ScriptResult < TR > > ExecuteArrayCustomOptions < TP , TR > ( string scriptName , TP parameter , JsonTypeInfo < TP > callJsonTypeInfo , JsonTypeInfo < TR > resultJsonTypeInfo ,
32+ Action < HttpRequestOptions > ? applyOptions , CancellationToken cancellationToken )
2333 {
24- using var activity = CgScriptTelemetry . Source . StartActivity ( scriptName ) ;
25- var path = await GetPath ( scriptName , "?expandParameters=true" ) ;
26- var jsonContent = await GetJsonContent ( scriptName , parameter , callJsonTypeInfo ) ;
27- var httpResponseMessage = await httpClient . PostAsync ( path , jsonContent , cancellationToken ) . ConfigureAwait ( false ) ;
34+ using var activity = CgScriptTelemetry . Source . StartActivity ( scriptName ) ;
35+ var path = await GetPath ( scriptName , "?expandParameters=true" ) ;
36+ var jsonContent = await GetJsonContent ( scriptName , parameter , callJsonTypeInfo ) ;
37+ var request = new HttpRequestMessage ( HttpMethod . Post , path ) { Content = jsonContent , } ;
38+ applyOptions ? . Invoke ( request . Options ) ;
39+ var httpResponseMessage = await httpClient . SendAsync ( request , cancellationToken ) . ConfigureAwait ( false ) ;
2840 return await ParseResponse ( httpResponseMessage , resultJsonTypeInfo , cancellationToken ) ;
2941 }
3042
31- public async Task < ScriptResult < TR > > Execute < TR > ( string scriptName , JsonTypeInfo < TR > resultJsonTypeInfo , CancellationToken cancellationToken = default )
43+ public Task < ScriptResult < TR > > Execute < TR > ( string scriptName , JsonTypeInfo < TR > resultJsonTypeInfo , CancellationToken cancellationToken = default ) =>
44+ ExecuteCustomOptions ( scriptName , resultJsonTypeInfo , null , cancellationToken ) ;
45+
46+ public async Task < ScriptResult < TR > > ExecuteCustomOptions < TR > ( string scriptName , JsonTypeInfo < TR > resultJsonTypeInfo , Action < HttpRequestOptions > ? applyOptions ,
47+ CancellationToken cancellationToken = default )
3248 {
33- using var activity = CgScriptTelemetry . Source . StartActivity ( scriptName ) ;
34- var path = await GetPath ( scriptName , "?expandParameters=true" ) ;
35- var jsonContent = await GetJsonContent ( scriptName , null , ( JsonTypeInfo < object > ) null ! ) ;
36- var httpResponseMessage = await httpClient . PostAsync ( path , jsonContent , cancellationToken ) . ConfigureAwait ( false ) ;
49+ using var activity = CgScriptTelemetry . Source . StartActivity ( scriptName ) ;
50+ var path = await GetPath ( scriptName , "?expandParameters=true" ) ;
51+ var jsonContent = await GetJsonContent ( scriptName , null , ( JsonTypeInfo < object > ) null ! ) ;
52+ var request = new HttpRequestMessage ( HttpMethod . Post , path ) { Content = jsonContent , } ;
53+ applyOptions ? . Invoke ( request . Options ) ;
54+ var httpResponseMessage = await httpClient . SendAsync ( request , cancellationToken ) . ConfigureAwait ( false ) ;
3755 return await ParseResponse ( httpResponseMessage , resultJsonTypeInfo , cancellationToken ) ;
3856 }
3957
@@ -67,39 +85,69 @@ private async Task<ScriptResult<TR>> ParseResponse<TR>(HttpResponseMessage call,
6785 }
6886
6987 [ RequiresUnreferencedCode ( "JSON" ) ]
70- public async Task < ScriptResult < TR > > Execute < TP , TR > ( string scriptName , TP parameter , JsonSerializerOptions ? options , CancellationToken cancellationToken = default )
88+ public Task < ScriptResult < TR > > Execute < TP , TR > ( string scriptName , TP parameter , JsonSerializerOptions ? options , CancellationToken cancellationToken = default ) =>
89+ ExecuteCustomOptions < TP , TR > ( scriptName , parameter , options , null , cancellationToken ) ;
90+
91+ [ RequiresUnreferencedCode ( "JSON" ) ]
92+ public async Task < ScriptResult < TR > > ExecuteCustomOptions < TP , TR > ( string scriptName , TP parameter , JsonSerializerOptions ? options , Action < HttpRequestOptions > ? applyOptions ,
93+ CancellationToken cancellationToken = default )
7194 {
7295 using var activity = CgScriptTelemetry . Source . StartActivity ( scriptName ) ;
73- return await ParseResponse < TR > ( await httpClient . PostAsync ( await GetPath ( scriptName ) , await GetJsonContent ( scriptName , parameter , options ) , cancellationToken ) . ConfigureAwait ( false ) , options , cancellationToken ) ;
96+ var path = await GetPath ( scriptName ) ;
97+ var jsonContent = await GetJsonContent ( scriptName , parameter , options ) ;
98+ var request = new HttpRequestMessage ( HttpMethod . Post , path ) { Content = jsonContent , } ;
99+ applyOptions ? . Invoke ( request . Options ) ;
100+ var httpResponseMessage = await httpClient . SendAsync ( request , cancellationToken ) . ConfigureAwait ( false ) ;
101+ return await ParseResponse < TR > ( httpResponseMessage , options , cancellationToken ) ;
74102 }
75103
76104 [ RequiresUnreferencedCode ( "JSON" ) ]
77- public async Task < ScriptResult < TR > > ExecuteArray < TP , TR > ( string scriptName , TP parameter , JsonSerializerOptions ? options , CancellationToken cancellationToken = default )
105+ public async Task < ScriptResult < TR > > ExecuteArrayCustomOptions < TP , TR > ( string scriptName , TP parameter , JsonSerializerOptions ? options , Action < HttpRequestOptions > ? applyOptions , CancellationToken cancellationToken = default )
78106 {
79- using var activity = CgScriptTelemetry . Source . StartActivity ( scriptName ) ;
80- var path = await GetPath ( scriptName , "?expandParameters=true" ) ;
81- var jsonContent = await GetJsonContent ( scriptName , parameter , options ) ;
82- var httpResponseMessage = await httpClient . PostAsync ( path , jsonContent , cancellationToken ) . ConfigureAwait ( false ) ;
107+ using var activity = CgScriptTelemetry . Source . StartActivity ( scriptName ) ;
108+ var path = await GetPath ( scriptName , "?expandParameters=true" ) ;
109+ var jsonContent = await GetJsonContent ( scriptName , parameter , options ) ;
110+ var request = new HttpRequestMessage ( HttpMethod . Post , path ) { Content = jsonContent , } ;
111+ applyOptions ? . Invoke ( request . Options ) ;
112+ var httpResponseMessage = await httpClient . SendAsync ( request , cancellationToken ) . ConfigureAwait ( false ) ;
83113 return await ParseResponse < TR > ( httpResponseMessage , options , cancellationToken ) ;
84114 }
85115
86116 [ RequiresUnreferencedCode ( "JSON" ) ]
87- public async Task < ScriptResult < TR > > Execute < TR > ( string scriptName , IReadOnlyCollection < object > parameters , JsonSerializerOptions ? options = null , CancellationToken cancellationToken = default )
117+ public Task < ScriptResult < TR > > ExecuteArray < TP , TR > ( string scriptName , TP parameter , JsonSerializerOptions ? options , CancellationToken cancellationToken = default ) =>
118+ ExecuteArrayCustomOptions < TP , TR > ( scriptName , parameter , options , null , cancellationToken ) ;
119+
120+ [ RequiresUnreferencedCode ( "JSON" ) ]
121+ public Task < ScriptResult < TR > > Execute < TR > ( string scriptName , IReadOnlyCollection < object > parameters , JsonSerializerOptions ? options = null , CancellationToken cancellationToken = default ) =>
122+ ExecuteCustomOptions < TR > ( scriptName , parameters , options , null , cancellationToken ) ;
123+
124+ [ RequiresUnreferencedCode ( "JSON" ) ]
125+ public async Task < ScriptResult < TR > > ExecuteCustomOptions < TR > ( string scriptName , IReadOnlyCollection < object > parameters , JsonSerializerOptions ? options ,
126+ Action < HttpRequestOptions > ? applyOptions , CancellationToken cancellationToken = default )
88127 {
89- using var activity = CgScriptTelemetry . Source . StartActivity ( scriptName ) ;
90- var path = await GetPath ( scriptName , "?expandParameters=true" ) ;
91- var jsonContent = await GetJsonContent ( scriptName , parameters , options ) ;
92- var httpResponseMessage = await httpClient . PostAsync ( path , jsonContent , cancellationToken ) . ConfigureAwait ( false ) ;
128+ using var activity = CgScriptTelemetry . Source . StartActivity ( scriptName ) ;
129+ var path = await GetPath ( scriptName , "?expandParameters=true" ) ;
130+ var jsonContent = await GetJsonContent ( scriptName , parameters , options ) ;
131+ var request = new HttpRequestMessage ( HttpMethod . Post , path ) { Content = jsonContent , } ;
132+ applyOptions ? . Invoke ( request . Options ) ;
133+ var httpResponseMessage = await httpClient . SendAsync ( request , cancellationToken ) . ConfigureAwait ( false ) ;
93134 return await ParseResponse < TR > ( httpResponseMessage , options , cancellationToken ) ;
94135 }
95136
96137 [ RequiresUnreferencedCode ( "JSON" ) ]
97- public async Task < ScriptResult < TR > > Execute < TR > ( string scriptName , JsonSerializerOptions ? options = null , CancellationToken cancellationToken = default )
138+ public Task < ScriptResult < TR > > Execute < TR > ( string scriptName , JsonSerializerOptions ? options = null , CancellationToken cancellationToken = default ) =>
139+ ExecuteCustomOptions < TR > ( scriptName , options , null , cancellationToken ) ;
140+
141+ [ RequiresUnreferencedCode ( "JSON" ) ]
142+ public async Task < ScriptResult < TR > > ExecuteCustomOptions < TR > ( string scriptName , JsonSerializerOptions ? options , Action < HttpRequestOptions > ? applyOptions ,
143+ CancellationToken cancellationToken = default )
98144 {
99- using var activity = CgScriptTelemetry . Source . StartActivity ( scriptName ) ;
100- var path = await GetPath ( scriptName ) ;
101- var jsonContent = await GetJsonContent ( scriptName , null , ( JsonTypeInfo < object > ) null ! ) ;
102- var httpResponseMessage = await httpClient . PostAsync ( path , jsonContent , cancellationToken ) . ConfigureAwait ( false ) ;
145+ using var activity = CgScriptTelemetry . Source . StartActivity ( scriptName ) ;
146+ var path = await GetPath ( scriptName ) ;
147+ var jsonContent = await GetJsonContent ( scriptName , null , ( JsonTypeInfo < object > ) null ! ) ;
148+ var request = new HttpRequestMessage ( HttpMethod . Post , path ) { Content = jsonContent , } ;
149+ applyOptions ? . Invoke ( request . Options ) ;
150+ var httpResponseMessage = await httpClient . SendAsync ( request , cancellationToken ) . ConfigureAwait ( false ) ;
103151 return await ParseResponse < TR > ( httpResponseMessage , options , cancellationToken ) ;
104152 }
105153
0 commit comments