10000 refactor: add generic methods · cnblogs/dashscope-sdk@7287c7d · GitHub
[go: up one dir, main page]

Skip to content

Commit 7287c7d

Browse files
committed
refactor: add generic methods
1 parent 8d004d5 commit 7287c7d

File tree

3 files changed

+58
-3
lines changed

3 files changed

+58
-3
lines changed

src/Cnblogs.DashScope.Core/ApplicationRequest.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,22 @@
33
/// <summary>
44
/// Request body for an application all.
55
/// </summary>
6-
public class ApplicationRequest
6+
/// <typeparam name="TBizContent">Type of the biz_content</typeparam>
7+
public class ApplicationRequest<TBizContent>
8+
where TBizContent : class
79
{
810
/// <summary>
911
/// Content of this call.
1012
/// </summary>
11-
public required ApplicationInput Input { get; init; }
13+
public required ApplicationInput<TBizContent> Input { get; init; }
1214

1315
/// <summary>
1416
/// Optional configurations.
1517
/// </summary>
1618
public required ApplicationParameters? Parameters { get; init; }
1719
}
20+
21+
/// <summary>
22+
/// Request body for an application call with dictionary biz_content.
23+
/// </summary>
24+
public class ApplicationRequest : ApplicationRequest<Dictionary<string, object?>>;

src/Cnblogs.DashScope.Core/DashScopeClientCore.cs

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,20 @@ public DashScopeClientCore(HttpClient httpClient)
3636
public Uri? BaseAddress => _httpClient.BaseAddress;
3737

3838
/// <inheritdoc />
39-
public async Task<ApplicationResponse> GetApplicationResponseAsync(
39+
public Task<ApplicationResponse> GetApplicationResponseAsync(
4040
string applicationId,
4141
ApplicationRequest input,
4242
CancellationToken cancellationToken = default)
43+
{
44+
return GetApplicationResponseAsync<Dictionary<string, object?>>(applicationId, input, cancellationToken);
45+
}
46+
47+
/// <inheritdoc />
48+
public async Task<ApplicationResponse> GetApplicationResponseAsync<TBizContent>(
49+
string applicationId,
50+
ApplicationRequest<TBizContent> input,
51+
CancellationToken cancellationToken = default)
52+
where TBizContent : class
4353
{
4454
var request = BuildRequest(HttpMethod.Post, ApiLinks.Application(applicationId), input);
4555
return (await SendAsync<ApplicationResponse>(request, cancellationToken))!;
@@ -50,6 +60,16 @@ public IAsyncEnumerable<ApplicationResponse> GetApplicationResponseStreamAsync(
5060
string applicationId,
5161
ApplicationRequest input,
5262
CancellationToken cancellationToken = default)
63+
{
64+
return GetApplicationResponseStreamAsync<Dictionary<string, object?>>(applicationId, input, cancellationToken);
65+
}
66+
67+
/// <inheritdoc />
68+
public IAsyncEnumerable<ApplicationResponse> GetApplicationResponseStreamAsync<TBizContent>(
69+
string applicationId,
70+
ApplicationRequest<TBizContent> input,
71+
CancellationToken cancellationToken = default)
72+
where TBizContent : class
5373
{
5474
var request = BuildSseRequest(HttpMethod.Post, ApiLinks.Application(applicationId), input);
5575
return StreamAsync<ApplicationResponse>(request, cancellationToken);

src/Cnblogs.DashScope.Core/IDashScopeClient.cs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,20 @@ Task<ApplicationResponse> GetApplicationResponseAsync(
2222
ApplicationRequest input,
2323
CancellationToken cancellationToken = default);
2424

25+
/// <summary>
26+
/// Make a call to custom application.
27+
/// </summary>
28+
/// <param name="applicationId">Name of the application.</param>
29+
/// <param name="input">The request body.</param>
30+
/// <param name="cancellationToken">The cancellation token to use.</param>
31+
/// <typeparam name="TBizContent">Type of the biz_content.</typeparam>
32+
/// <returns></returns>
33+
Task<ApplicationResponse> GetApplicationResponseAsync<TBizContent>(
34+
string applicationId,
35+
ApplicationRequest<TBizContent> input,
36+
CancellationToken cancellationToken = default)
37+
where TBizContent : class;
38+
2539
/// <summary>
2640
/// Make a call to custom application.
2741
/// </summary>
@@ -34,6 +48,20 @@ IAsyncEnumerable<ApplicationResponse> GetApplicationResponseStreamAsync(
3448
ApplicationRequest input,
3549
CancellationToken cancellationToken = default);
3650

51+
/// <summary>
52+
/// Make a call to custom application.
53+
/// </summary>
54+
/// <param name="applicationId">Name of the application.</param>
55+
/// <param name="input">The request body.</param>
56+
/// <param name="cancellationToken">The cancellation token to use.</param>
57+
/// <typeparam name="TBizContent">Type of the biz_content.</typeparam>
58+
/// <returns></returns>
59+
IAsyncEnumerable<ApplicationResponse> GetApplicationResponseStreamAsync<TBizContent>(
60+
string applicationId,
61+
ApplicationRequest<TBizContent> input,
62+
CancellationToken cancellationToken = default)
63+
where TBizContent : class;
64+
3765
/// <summary>
3866
/// Return textual completions as configured for a given prompt.
3967
/// </summary>

0 commit comments

Comments
 (0)
0