feat(wxapi): 新增短剧媒咨管理版权授权相关接口

This commit is contained in:
Fu Diwei 2025-04-29 13:06:05 +08:00
parent 53fbe2ff68
commit 530735a7ec
17 changed files with 509 additions and 0 deletions

View File

@ -504,6 +504,98 @@ namespace SKIT.FlurlHttpClient.Wechat.Api
return await client.SendFlurlRequestAsJsonAsync<Models.WxaSecVodGetAuthorizedAppsResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /wxa/sec/vod/authorizecopyright 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/mini-drama/mini_drama.html#_8-1-%E5%A2%9E%E5%8A%A0%E7%89%88%E6%9D%83%E6%8E%88%E6%9D%83 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.WxaSecVodAuthorizeCopyrightResponse> ExecuteWxaSecVodAuthorizeCopyrightAsync(this WechatApiClient client, Models.WxaSecVodAuthorizeCopyrightRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "wxa", "sec", "vod", "authorizecopyright")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.WxaSecVodAuthorizeCopyrightResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /wxa/sec/vod/deauthorizecopyright 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/mini-drama/mini_drama.html#_8-2-%E8%A7%A3%E9%99%A4%E7%89%88%E6%9D%83%E6%8E%88%E6%9D%83 ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.WxaSecVodDeauthorizeCopyrightResponse> ExecuteWxaSecVodDeauthorizeCopyrightAsync(this WechatApiClient client, Models.WxaSecVodDeauthorizeCopyrightRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "wxa", "sec", "vod", "deauthorizecopyright")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.WxaSecVodDeauthorizeCopyrightResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /wxa/sec/vod/getcopyrightauthorizationlist 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/mini-drama/mini_drama.html#_8-3-%E6%9F%A5%E8%AF%A2%E7%89%88%E6%9D%83%E6%8E%88%E6%9D%83%E4%BF%A1%E6%81%AF ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.WxaSecVodGetCopyrightAuthorizationListResponse> ExecuteWxaSecVodGetCopyrightAuthorizationListAsync(this WechatApiClient client, Models.WxaSecVodGetCopyrightAuthorizationListRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "wxa", "sec", "vod", "getcopyrightauthorizationlist")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.WxaSecVodGetCopyrightAuthorizationListResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /wxa/sec/vod/getcopyrightauthorizedlist 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/mini-drama/mini_drama.html#_8-4-%E6%9F%A5%E8%AF%A2%E8%A2%AB%E7%89%88%E6%9D%83%E6%8E%88%E6%9D%83%E4%BF%A1%E6%81%AF ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.WxaSecVodGetCopyrightAuthorizedListResponse> ExecuteWxaSecVodGetCopyrightAuthorizedListAsync(this WechatApiClient client, Models.WxaSecVodGetCopyrightAuthorizedListRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "wxa", "sec", "vod", "getcopyrightauthorizedlist")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync<Models.WxaSecVodGetCopyrightAuthorizedListResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
#region Vod/Upload

View File

@ -0,0 +1,45 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /wxa/sec/vod/authorizecopyright 接口的请求。</para>
/// </summary>
public class WxaSecVodAuthorizeCopyrightRequest : WechatApiRequest, IInferable<WxaSecVodAuthorizeCopyrightRequest, WxaSecVodAuthorizeCopyrightResponse>
{
/// <summary>
/// 获取或设置授权的剧目 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("drama_ids")]
[System.Text.Json.Serialization.JsonPropertyName("drama_ids")]
public IList<long> DramaIdList { get; set; } = new List<long>();
/// <summary>
/// 获取或设置授权类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("authorization_type")]
[System.Text.Json.Serialization.JsonPropertyName("authorization_type")]
public int AuthorizationType { get; set; }
/// <summary>
/// 获取或设置被授权方小程序 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("authorized_appid")]
[System.Text.Json.Serialization.JsonPropertyName("authorized_appid")]
public string? AuthorizedAppId { get; set; }
/// <summary>
/// 获取或设置被授权方主体证件号。
/// </summary>
[Newtonsoft.Json.JsonProperty("authorized_subject_cert_no")]
[System.Text.Json.Serialization.JsonPropertyName("authorized_subject_cert_no")]
public string? AuthorizedSubjectCertificateNumber { get; set; }
/// <summary>
/// 获取或设置授权到期时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("expire_time")]
[System.Text.Json.Serialization.JsonPropertyName("expire_time")]
public long? ExpireTimestamp { get; set; }
}
}

View File

@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /wxa/sec/vod/authorizecopyright 接口的响应。</para>
/// </summary>
public class WxaSecVodAuthorizeCopyrightResponse : WechatApiResponse
{
public static class Types
{
public class Result : WxaSecVodAuthorizeDramaResponse.Types.Result
{
}
}
/// <summary>
/// 获取或设置结果列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("result")]
[System.Text.Json.Serialization.JsonPropertyName("result")]
public Types.Result[] ResultList { get; set; } = default!;
}
}

View File

@ -0,0 +1,38 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /wxa/sec/vod/deauthorizecopyright 接口的请求。</para>
/// </summary>
public class WxaSecVodDeauthorizeCopyrightRequest : WechatApiRequest, IInferable<WxaSecVodDeauthorizeCopyrightRequest, WxaSecVodDeauthorizeCopyrightResponse>
{
/// <summary>
/// 获取或设置解除授权的剧目 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("drama_ids")]
[System.Text.Json.Serialization.JsonPropertyName("drama_ids")]
public IList<long> DramaIdList { get; set; } = new List<long>();
/// <summary>
/// 获取或设置授权类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("authorization_type")]
[System.Text.Json.Serialization.JsonPropertyName("authorization_type")]
public int AuthorizationType { get; set; }
/// <summary>
/// 获取或设置被授权方小程序 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("authorized_appid")]
[System.Text.Json.Serialization.JsonPropertyName("authorized_appid")]
public string? AuthorizedAppId { get; set; }
/// <summary>
/// 获取或设置被授权方主体证件号。
/// </summary>
[Newtonsoft.Json.JsonProperty("authorized_subject_cert_no")]
[System.Text.Json.Serialization.JsonPropertyName("authorized_subject_cert_no")]
public string? AuthorizedSubjectCertificateNumber { get; set; }
}
}

View File

@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /wxa/sec/vod/deauthorizecopyright 接口的响应。</para>
/// </summary>
public class WxaSecVodDeauthorizeCopyrightResponse : WechatApiResponse
{
public static class Types
{
public class Result : WxaSecVodAuthorizeCopyrightResponse.Types.Result
{
}
}
/// <summary>
/// 获取或设置结果列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("result")]
[System.Text.Json.Serialization.JsonPropertyName("result")]
public Types.Result[] ResultList { get; set; } = default!;
}
}

View File

@ -0,0 +1,50 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /wxa/sec/vod/getcopyrightauthorizationlist 接口的请求。</para>
/// </summary>
public class WxaSecVodGetCopyrightAuthorizationListRequest : WechatApiRequest, IInferable<WxaSecVodGetCopyrightAuthorizationListRequest, WxaSecVodGetCopyrightAuthorizationListResponse>
{
/// <summary>
/// 获取或设置授权的剧目 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("drama_id")]
[System.Text.Json.Serialization.JsonPropertyName("drama_id")]
public long? DramaId { get; set; }
/// <summary>
/// 获取或设置授权类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("authorization_type")]
[System.Text.Json.Serialization.JsonPropertyName("authorization_type")]
public int? AuthorizationType { get; set; }
/// <summary>
/// 获取或设置被授权方小程序 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("authorized_appid")]
[System.Text.Json.Serialization.JsonPropertyName("authorized_appid")]
public string? AuthorizedAppId { get; set; }
/// <summary>
/// 获取或设置被授权方主体证件号。
/// </summary>
[Newtonsoft.Json.JsonProperty("authorized_subject_cert_no")]
[System.Text.Json.Serialization.JsonPropertyName("authorized_subject_cert_no")]
public string? AuthorizedSubjectCertificateNumber { get; set; }
/// <summary>
/// 获取或设置分页起始位置。
/// </summary>
[Newtonsoft.Json.JsonProperty("offset")]
[System.Text.Json.Serialization.JsonPropertyName("offset")]
public int? Offset { get; set; }
/// <summary>
/// 获取或设置分页每页数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("limit")]
[System.Text.Json.Serialization.JsonPropertyName("limit")]
public int? Limit { get; set; }
}
}

View File

@ -0,0 +1,78 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /wxa/sec/vod/getcopyrightauthorizationlist 接口的响应。</para>
/// </summary>
public class WxaSecVodGetCopyrightAuthorizationListResponse : WechatApiResponse
{
public static class Types
{
public class DramaCopyright
{
/// <summary>
/// 获取或设置剧目 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("drama_id")]
[System.Text.Json.Serialization.JsonPropertyName("drama_id")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public long DramaId { get; set; }
/// <summary>
/// 获取或设置授权方小程序 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("authorizer_appid")]
[System.Text.Json.Serialization.JsonPropertyName("authorizer_appid")]
public string AuthorizerAppId { get; set; } = default!;
/// <summary>
/// 获取或设置授权类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("authorization_type")]
[System.Text.Json.Serialization.JsonPropertyName("authorization_type")]
public int AuthorizationType { get; set; }
/// <summary>
/// 获取或设置被授权方小程序 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("authorized_appid")]
[System.Text.Json.Serialization.JsonPropertyName("authorized_appid")]
public string? AuthorizedAppId { get; set; }
/// <summary>
/// 获取或设置被授权方主体证件号。
/// </summary>
[Newtonsoft.Json.JsonProperty("authorized_subject_cert_no")]
[System.Text.Json.Serialization.JsonPropertyName("authorized_subject_cert_no")]
public string? AuthorizedSubjectCertificateNumber { get; set; }
/// <summary>
/// 获取或设置授权时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("authorized_time")]
[System.Text.Json.Serialization.JsonPropertyName("authorized_time")]
public long AuthorizeTimestamp { get; set; }
/// <summary>
/// 获取或设置授权到期时间戳。
/// </summary>
[Newtonsoft.Json.JsonProperty("expire_time")]
[System.Text.Json.Serialization.JsonPropertyName("expire_time")]
public long? ExpireTimestamp { get; set; }
}
}
/// <summary>
/// 获取或设置授权列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("list")]
[System.Text.Json.Serialization.JsonPropertyName("list")]
public Types.DramaCopyright[] DramaCopyrightList { get; set; } = default!;
/// <summary>
/// 获取或设置记录总数。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_count")]
[System.Text.Json.Serialization.JsonPropertyName("total_count")]
public int TotalCount { get; set; }
}
}

View File

@ -0,0 +1,29 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /wxa/sec/vod/getcopyrightauthorizedlist 接口的请求。</para>
/// </summary>
public class WxaSecVodGetCopyrightAuthorizedListRequest : WechatApiRequest, IInferable<WxaSecVodGetCopyrightAuthorizedListRequest, WxaSecVodGetCopyrightAuthorizedListResponse>
{
/// <summary>
/// 获取或设置授权方小程序 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("authorizer_appid")]
[System.Text.Json.Serialization.JsonPropertyName("authorizer_appid")]
public string? AuthorizerAppId { get; set; }
/// <summary>
/// 获取或设置分页起始位置。
/// </summary>
[Newtonsoft.Json.JsonProperty("offset")]
[System.Text.Json.Serialization.JsonPropertyName("offset")]
public int? Offset { get; set; }
/// <summary>
/// 获取或设置分页每页数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("limit")]
[System.Text.Json.Serialization.JsonPropertyName("limit")]
public int? Limit { get; set; }
}
}

View File

@ -0,0 +1,29 @@
namespace SKIT.FlurlHttpClient.Wechat.Api.Models
{
/// <summary>
/// <para>表示 [POST] /wxa/sec/vod/getcopyrightauthorizedlist 接口的响应。</para>
/// </summary>
public class WxaSecVodGetCopyrightAuthorizedListResponse : WechatApiResponse
{
public static class Types
{
public class DramaCopyright : WxaSecVodGetCopyrightAuthorizationListResponse.Types.DramaCopyright
{
}
}
/// <summary>
/// 获取或设置授权列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("list")]
[System.Text.Json.Serialization.JsonPropertyName("list")]
public Types.DramaCopyright[] DramaCopyrightList { get; set; } = default!;
/// <summary>
/// 获取或设置记录总数。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_count")]
[System.Text.Json.Serialization.JsonPropertyName("total_count")]
public int TotalCount { get; set; }
}
}

View File

@ -0,0 +1,6 @@
{
"authorization_type": 2,
"authorized_appid": "wx*************",
"drama_ids": [ 10001, 10009 ],
"expire_time": 1729157743
}

View File

@ -0,0 +1,16 @@
{
"errcode": 0,
"errmsg": "ok",
"result": [
{
"drama_id": 10001,
"errcode": 0,
"errmsg": "ok"
},
{
"drama_id": 10009,
"errcode": 0,
"errmsg": "ok"
}
]
}

View File

@ -0,0 +1,5 @@
{
"authorization_type": 2,
"authorized_appid": "wx*************",
"drama_ids": [ 10001, 10009 ]
}

View File

@ -0,0 +1,16 @@
{
"errcode": 0,
"errmsg": "ok",
"result": [
{
"drama_id": 10001,
"errcode": 0,
"errmsg": "ok"
},
{
"drama_id": 10009,
"errcode": 0,
"errmsg": "ok"
}
]
}

View File

@ -0,0 +1,6 @@
{
"authorization_type": 2,
"authorized_appid": "wx*************",
"offset": 0,
"limit": 2
}

View File

@ -0,0 +1,25 @@
{
"errcode": 0,
"errmsg": "ok",
"total_count": 5,
"list": [
{
"authorizer_appid": "wx123456789",
"authorization_type": 2,
"authorized_appid": "wx**********",
"authorized_subject_cert_no": "",
"drama_id": 10001,
"authorized_time": 1702020510,
"expire_time": 0
},
{
"authorizer_appid": "wx123456789",
"authorization_type": 2,
"authorized_appid": "wx**********",
"authorized_subject_cert_no": "",
"drama_id": 10002,
"authorized_time": 1702020510,
"expire_time": 0
}
]
}

View File

@ -0,0 +1,5 @@
{
"authorizer_appid": "wxwx123456789",
"offset": 0,
"limit": 2
}

View File

@ -0,0 +1,25 @@
{
"errcode": 0,
"errmsg": "ok",
"total_count": 5,
"list": [
{
"authorizer_appid": "wx123456789",
"authorization_type": 2,
"authorized_appid": "wx**********",
"authorized_subject_cert_no": "",
"drama_id": 10001,
"authorized_time": 1702020510,
"expire_time": 0
},
{
"authorizer_appid": "wx123456789",
"authorization_type": 2,
"authorized_appid": "wx**********",
"authorized_subject_cert_no": "",
"drama_id": 10002,
"authorized_time": 1702020510,
"expire_time": 0
}
]
}