Skip to content

Commit fd58fff

Browse files
committed
feat(microapp): 新增直播小玩法观众一键同玩能力相关接口
1 parent 7a80232 commit fd58fff

16 files changed

Lines changed: 331 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
using System;
2+
using System.Net.Http;
3+
using System.Threading;
4+
using System.Threading.Tasks;
5+
using Flurl.Http;
6+
7+
namespace SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.Webcast
8+
{
9+
public static class DouyinMicroAppWebcastClientExecuteAudienceExtensions
10+
{
11+
/// <summary>
12+
/// <para>异步调用 [POST] /audience/join_game 接口。</para>
13+
/// <para>
14+
/// REF: <br/>
15+
/// <![CDATA[ https://developer.open-douyin.com/docs/resource/zh-CN/interaction/develop/server/live/audience-play ]]>
16+
/// </para>
17+
/// </summary>
18+
/// <param name="client"></param>
19+
/// <param name="request"></param>
20+
/// <param name="cancellationToken"></param>
21+
/// <returns></returns>
22+
public static async Task<Models.WebcastAudienceJoinGameResponse> ExecuteWebcastAudienceJoinGameAsync(this DouyinMicroAppWebcastClient client, Models.WebcastAudienceJoinGameRequest request, CancellationToken cancellationToken = default)
23+
{
24+
if (client is null) throw new ArgumentNullException(nameof(client));
25+
if (request is null) throw new ArgumentNullException(nameof(request));
26+
27+
if (request.AppId is null)
28+
request.AppId = client.Credentials.AppId;
29+
30+
IFlurlRequest flurlReq = client
31+
.CreateFlurlRequest(request, HttpMethod.Post, "audience", "join_game")
32+
.WithHeader("X-Token", request.AccessToken);
33+
34+
return await client.SendFlurlRequestAsJsonAsync<Models.WebcastAudienceJoinGameResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
35+
}
36+
37+
/// <summary>
38+
/// <para>异步调用 [POST] /audience/leave_game 接口。</para>
39+
/// <para>
40+
/// REF: <br/>
41+
/// <![CDATA[ https://developer.open-douyin.com/docs/resource/zh-CN/interaction/develop/server/live/audience-play ]]>
42+
/// </para>
43+
/// </summary>
44+
/// <param name="client"></param>
45+
/// <param name="request"></param>
46+
/// <param name="cancellationToken"></param>
47+
/// <returns></returns>
48+
public static async Task<Models.WebcastAudienceLeaveGameResponse> ExecuteWebcastAudienceLeaveGameAsync(this DouyinMicroAppWebcastClient client, Models.WebcastAudienceLeaveGameRequest request, CancellationToken cancellationToken = default)
49+
{
50+
if (client is null) throw new ArgumentNullException(nameof(client));
51+
if (request is null) throw new ArgumentNullException(nameof(request));
52+
53+
if (request.AppId is null)
54+
request.AppId = client.Credentials.AppId;
55+
56+
IFlurlRequest flurlReq = client
57+
.CreateFlurlRequest(request, HttpMethod.Post, "audience", "leave_game")
58+
.WithHeader("X-Token", request.AccessToken);
59+
60+
return await client.SendFlurlRequestAsJsonAsync<Models.WebcastAudienceLeaveGameResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
61+
}
62+
}
63+
}

src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/Webcast/Extensions/DouyinMicroAppWebcastClientExecuteGamingConExtensions.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,32 @@ public static class DouyinMicroAppWebcastClientExecuteGamingConExtensions
141141
return await client.SendFlurlRequestAsJsonAsync<Models.WebcastGamingConRoundCompleteUploadUserResultResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
142142
}
143143

144+
/// <summary>
145+
/// <para>异步调用 [POST] /gaming_con/round/co_game_upload_user_data 接口。</para>
146+
/// <para>
147+
/// REF: <br/>
148+
/// <![CDATA[ https://developer.open-douyin.com/docs/resource/zh-CN/interaction/develop/server/live/audience-play ]]>
149+
/// </para>
150+
/// </summary>
151+
/// <param name="client"></param>
152+
/// <param name="request"></param>
153+
/// <param name="cancellationToken"></param>
154+
/// <returns></returns>
155+
public static async Task<Models.WebcastGamingConRoundCoGameUploadUserDataResponse> ExecuteWebcastGamingConRoundCoGameUploadUserDataAsync(this DouyinMicroAppWebcastClient client, Models.WebcastGamingConRoundCoGameUploadUserDataRequest request, CancellationToken cancellationToken = default)
156+
{
157+
if (client is null) throw new ArgumentNullException(nameof(client));
158+
if (request is null) throw new ArgumentNullException(nameof(request));
159+
160+
if (request.AppId is null)
161+
request.AppId = client.Credentials.AppId;
162+
163+
IFlurlRequest flurlReq = client
164+
.CreateFlurlRequest(request, HttpMethod.Post, "gaming_con", "round", "co_game_upload_user_data")
165+
.WithHeader("X-Token", request.AccessToken);
166+
167+
return await client.SendFlurlRequestAsJsonAsync<Models.WebcastGamingConRoundCoGameUploadUserDataResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
168+
}
169+
144170
/// <summary>
145171
/// <para>异步调用 [POST] /gaming_con/world_rank/set_valid_version 接口。</para>
146172
/// <para>
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
namespace SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.Webcast.Models
2+
{
3+
/// <summary>
4+
/// <para>表示 [POST] /audience/join_game 接口的请求。</para>
5+
/// </summary>
6+
public class WebcastAudienceJoinGameRequest : DouyinMicroAppWebcastRequest
7+
{
8+
/// <summary>
9+
/// 获取或设置应用的 AppId。如果不指定将使用构造 <see cref="DouyinMicroAppWebcastClient"/> 时的 <see cref="DouyinMicroAppWebcastClientOptions.AppId"/> 参数。
10+
/// </summary>
11+
[Newtonsoft.Json.JsonProperty("app_id")]
12+
[System.Text.Json.Serialization.JsonPropertyName("app_id")]
13+
public string? AppId { get; set; }
14+
15+
/// <summary>
16+
/// 获取或设置用户的 OpenId。
17+
/// </summary>
18+
[Newtonsoft.Json.JsonProperty("open_id")]
19+
[System.Text.Json.Serialization.JsonPropertyName("open_id")]
20+
public string OpenId { get; set; } = string.Empty;
21+
22+
/// <summary>
23+
/// 获取或设置​房间 ID。
24+
/// </summary>
25+
[Newtonsoft.Json.JsonProperty("room_id")]
26+
[System.Text.Json.Serialization.JsonPropertyName("room_id")]
27+
public string RoomId { get; set; } = string.Empty;
28+
}
29+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.Webcast.Models
2+
{
3+
/// <summary>
4+
/// <para>表示 [POST] /audience/join_game 接口的响应。</para>
5+
/// </summary>
6+
public class WebcastAudienceJoinGameResponse : DouyinMicroAppWebcastResponse
7+
{
8+
}
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.Webcast.Models
2+
{
3+
/// <summary>
4+
/// <para>表示 [POST] /audience/leave_game 接口的请求。</para>
5+
/// </summary>
6+
public class WebcastAudienceLeaveGameRequest : WebcastAudienceJoinGameRequest
7+
{
8+
}
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.Webcast.Models
2+
{
3+
/// <summary>
4+
/// <para>表示 [POST] /audience/leave_game 接口的响应。</para>
5+
/// </summary>
6+
public class WebcastAudienceLeaveGameResponse : DouyinMicroAppWebcastResponse
7+
{
8+
}
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
using System.Collections.Generic;
2+
3+
namespace SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.Webcast.Models
4+
{
5+
/// <summary>
6+
/// <para>表示 [POST] /gaming_con/round/co_game_upload_user_data​ 接口的请求。</para>
7+
/// </summary>
8+
public class WebcastGamingConRoundCoGameUploadUserDataRequest : DouyinMicroAppWebcastRequest
9+
{
10+
public static class Types
11+
{
12+
public class Anchor
13+
{
14+
/// <summary>
15+
/// 获取或设置主播的 OpenId。
16+
/// </summary>
17+
[Newtonsoft.Json.JsonProperty("anchor_open_id")]
18+
[System.Text.Json.Serialization.JsonPropertyName("anchor_open_id")]
19+
public string AnchorOpenId { get; set; } = string.Empty;
20+
21+
/// <summary>
22+
/// 获取或设置​房间 ID。
23+
/// </summary>
24+
[Newtonsoft.Json.JsonProperty("room_id")]
25+
[System.Text.Json.Serialization.JsonPropertyName("room_id")]
26+
public string RoomId { get; set; } = string.Empty;
27+
}
28+
29+
public class User
30+
{
31+
/// <summary>
32+
/// 获取或设置用户的 OpenId。
33+
/// </summary>
34+
[Newtonsoft.Json.JsonProperty("open_id")]
35+
[System.Text.Json.Serialization.JsonPropertyName("open_id")]
36+
public string OpenId { get; set; } = string.Empty;
37+
38+
/// <summary>
39+
/// 获取或设置​用户得分。
40+
/// </summary>
41+
[Newtonsoft.Json.JsonProperty("score")]
42+
[System.Text.Json.Serialization.JsonPropertyName("score")]
43+
public long Score { get; set; }
44+
}
45+
}
46+
47+
/// <summary>
48+
/// 获取或设置应用的 AppId。如果不指定将使用构造 <see cref="DouyinMicroAppWebcastClient"/> 时的 <see cref="DouyinMicroAppWebcastClientOptions.AppId"/> 参数。
49+
/// </summary>
50+
[Newtonsoft.Json.JsonProperty("app_id")]
51+
[System.Text.Json.Serialization.JsonPropertyName("app_id")]
52+
public string? AppId { get; set; }
53+
54+
/// <summary>
55+
/// 获取或设置​​对局 ID。
56+
/// </summary>
57+
[Newtonsoft.Json.JsonProperty("round_id")]
58+
[System.Text.Json.Serialization.JsonPropertyName("round_id")]
59+
public long RoundId { get; set; }
60+
61+
/// <summary>
62+
/// 获取或设置​​对局状态。
63+
/// </summary>
64+
[Newtonsoft.Json.JsonProperty("round_status")]
65+
[System.Text.Json.Serialization.JsonPropertyName("round_status")]
66+
public int RoundStatus { get; set; }
67+
68+
/// <summary>
69+
/// 获取或设置主播列表。
70+
/// </summary>
71+
[Newtonsoft.Json.JsonProperty("anchor_infos")]
72+
[System.Text.Json.Serialization.JsonPropertyName("anchor_infos")]
73+
public IList<Types.Anchor> AnchorList { get; set; } = new List<Types.Anchor>();
74+
75+
/// <summary>
76+
/// 获取或设置用户列表。
77+
/// </summary>
78+
[Newtonsoft.Json.JsonProperty("user_list")]
79+
[System.Text.Json.Serialization.JsonPropertyName("user_list")]
80+
public IList<Types.User> UserList { get; set; } = new List<Types.User>();
81+
}
82+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.Webcast.Models
2+
{
3+
/// <summary>
4+
/// <para>表示 [POST] /gaming_con/round/co_game_upload_user_data 接口的响应。</para>
5+
/// </summary>
6+
public class WebcastGamingConRoundCoGameUploadUserDataResponse : DouyinMicroAppWebcastResponse
7+
{
8+
}
9+
}

src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/Webcast/Models/GamingCon/WebcastGamingConRoundCompleteUploadUserResultRequest.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
using System.Collections.Generic;
2-
31
namespace SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.Webcast.Models
42
{
53
/// <summary>

src/SKIT.FlurlHttpClient.ByteDance.MicroApp/ExtendedSDK/Webcast/Models/LinkMic/WebcastLinkMicQueryResponse.cs

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,26 +33,53 @@ public class BaseInfo
3333

3434
public class User
3535
{
36+
public static class Types
37+
{
38+
public class AppInfo
39+
{
40+
/// <summary>
41+
/// 获取或设置麦上用户宿主是否支持云启动玩法。
42+
/// </summary>
43+
[Newtonsoft.Json.JsonProperty("host_app_start_app_available")]
44+
[System.Text.Json.Serialization.JsonPropertyName("host_app_start_app_available")]
45+
public bool? IsHostAppStartAppAvailable { get; set; }
46+
}
47+
}
48+
3649
/// <summary>
3750
/// 获取或设置用户的 OpenId。
3851
/// </summary>
3952
[Newtonsoft.Json.JsonProperty("open_id")]
4053
[System.Text.Json.Serialization.JsonPropertyName("open_id")]
4154
public string OpenId { get; set; } = default!;
4255

56+
/// <summary>
57+
/// 获取或设置头像 URL。
58+
/// </summary>
59+
[Newtonsoft.Json.JsonProperty("avatar_url")]
60+
[System.Text.Json.Serialization.JsonPropertyName("avatar_url")]
61+
public string? AvatarUrl { get; set; }
62+
63+
/// <summary>
64+
/// 获取或设置昵称。
65+
/// </summary>
66+
[Newtonsoft.Json.JsonProperty("nick_name")]
67+
[System.Text.Json.Serialization.JsonPropertyName("nick_name")]
68+
public string? Nickname { get; set; }
69+
4370
/// <summary>
4471
/// 获取或设置加密头像 URL。
4572
/// </summary>
4673
[Newtonsoft.Json.JsonProperty("sec_avatar_url")]
4774
[System.Text.Json.Serialization.JsonPropertyName("sec_avatar_url")]
48-
public string SecretAvatarUrl { get; set; } = default!;
75+
public string? SecretAvatarUrl { get; set; }
4976

5077
/// <summary>
5178
/// 获取或设置加密昵称。
5279
/// </summary>
5380
[Newtonsoft.Json.JsonProperty("sec_nick_name")]
5481
[System.Text.Json.Serialization.JsonPropertyName("sec_nick_name")]
55-
public string SecretNickName { get; set; } = default!;
82+
public string? SecretNickname { get; set; }
5683

5784
/// <summary>
5885
/// 获取或设置连麦状态。
@@ -95,6 +122,13 @@ public class User
95122
[Newtonsoft.Json.JsonProperty("camera_state")]
96123
[System.Text.Json.Serialization.JsonPropertyName("camera_state")]
97124
public int CameraState { get; set; }
125+
126+
/// <summary>
127+
/// 获取或设置麦上用户玩法相关信息​。
128+
/// </summary>
129+
[Newtonsoft.Json.JsonProperty("app_info")]
130+
[System.Text.Json.Serialization.JsonPropertyName("app_info")]
131+
public Types.AppInfo? AppInfo { get; set; }
98132
}
99133
}
100134

0 commit comments

Comments
 (0)