From 33967033cbfdec119fcd96ab7924a9b1c25d2186 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Sun, 28 May 2023 21:28:39 +0800 Subject: [PATCH] =?UTF-8?q?feat(wxapi):=20=E6=96=B0=E5=A2=9E=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E7=9F=AD=E5=89=A7=E5=AA=92=E8=B5=84=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WechatApiClientExecuteWxaSecExtensions.cs | 276 ++++++++++++++++++ .../CgibinMediaUploadImageRequest.cs | 2 +- .../Vod/Drama/WxaSecVodAuditDramaRequest.cs | 80 +++++ .../Vod/Drama/WxaSecVodAuditDramaResponse.cs | 16 + .../Vod/Drama/WxaSecVodGetDramaRequest.cs | 15 + .../Vod/Drama/WxaSecVodGetDramaResponse.cs | 46 +++ .../Vod/Drama/WxaSecVodListDramasRequest.cs | 22 ++ .../Vod/Drama/WxaSecVodListDramasResponse.cs | 130 +++++++++ .../Vod/Media/WxaSecVodDeleteMediaRequest.cs | 15 + .../Vod/Media/WxaSecVodDeleteMediaResponse.cs | 9 + .../Vod/Media/WxaSecVodGetMediaLinkRequest.cs | 56 ++++ .../Media/WxaSecVodGetMediaLinkResponse.cs | 71 +++++ .../Vod/Media/WxaSecVodGetMediaRequest.cs | 15 + .../Vod/Media/WxaSecVodGetMediaResponse.cs | 35 +++ .../Vod/Media/WxaSecVodListMediaRequest.cs | 50 ++++ .../Vod/Media/WxaSecVodListMediaResponse.cs | 156 ++++++++++ .../Vod/Upload/WxaSecVodApplyUploadRequest.cs | 36 +++ .../Upload/WxaSecVodApplyUploadResponse.cs | 15 + .../Upload/WxaSecVodCommitUploadRequest.cs | 51 ++++ .../Upload/WxaSecVodCommitUploadResponse.cs | 16 + .../Vod/Upload/WxaSecVodGetTaskRequest.cs | 15 + .../Vod/Upload/WxaSecVodGetTaskResponse.cs | 79 +++++ .../Vod/Upload/WxaSecVodPullUploadRequest.cs | 36 +++ .../Vod/Upload/WxaSecVodPullUploadResponse.cs | 16 + .../WxaSecVodSingleFileUploadRequest.cs | 52 ++++ .../WxaSecVodSingleFileUploadResponse.cs | 16 + .../Vod/Upload/WxaSecVodUploadPartRequest.cs | 38 +++ .../Vod/Upload/WxaSecVodUploadPartResponse.cs | 15 + .../Vod/Drama/WxaSecVodAuditDramaRequest.json | 11 + .../Drama/WxaSecVodAuditDramaResponse.json | 5 + .../Vod/Drama/WxaSecVodGetDramaRequest.json | 3 + .../Vod/Drama/WxaSecVodGetDramaResponse.json | 22 ++ .../Vod/Drama/WxaSecVodListDramasRequest.json | 4 + .../Drama/WxaSecVodListDramasResponse.json | 24 ++ .../Media/WxaSecVodDeleteMediaRequest.json | 3 + .../Media/WxaSecVodGetMediaLinkRequest.json | 4 + .../Media/WxaSecVodGetMediaLinkResponse.json | 13 + .../Vod/Media/WxaSecVodGetMediaRequest.json | 3 + .../Vod/Media/WxaSecVodGetMediaResponse.json | 27 ++ .../Vod/Media/WxaSecVodListMediaRequest.json | 4 + .../Vod/Media/WxaSecVodListMediaResponse.json | 29 ++ .../Upload/WxaSecVodApplyUploadRequest.json | 5 + .../Upload/WxaSecVodApplyUploadResponse.json | 5 + .../Upload/WxaSecVodCommitUploadRequest.json | 17 ++ .../Upload/WxaSecVodCommitUploadResponse.json | 5 + .../Vod/Upload/WxaSecVodGetTaskRequest.json | 3 + .../Vod/Upload/WxaSecVodGetTaskResponse.json | 14 + .../Upload/WxaSecVodPullUploadRequest.json | 5 + .../Upload/WxaSecVodPullUploadResponse.json | 5 + .../WxaSecVodSingleFileUploadResponse.json | 5 + .../Upload/WxaSecVodUploadPartResponse.json | 5 + 51 files changed, 1599 insertions(+), 1 deletion(-) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Drama/WxaSecVodAuditDramaRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Drama/WxaSecVodAuditDramaResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Drama/WxaSecVodGetDramaRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Drama/WxaSecVodGetDramaResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Drama/WxaSecVodListDramasRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Drama/WxaSecVodListDramasResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodDeleteMediaRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodDeleteMediaResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodGetMediaLinkRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodGetMediaLinkResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodGetMediaRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodGetMediaResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodListMediaRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodListMediaResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodApplyUploadRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodApplyUploadResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodCommitUploadRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodCommitUploadResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodGetTaskRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodGetTaskResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodPullUploadRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodPullUploadResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodSingleFileUploadRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodSingleFileUploadResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodUploadPartRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodUploadPartResponse.cs create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Drama/WxaSecVodAuditDramaRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Drama/WxaSecVodAuditDramaResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Drama/WxaSecVodGetDramaRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Drama/WxaSecVodGetDramaResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Drama/WxaSecVodListDramasRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Drama/WxaSecVodListDramasResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodDeleteMediaRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodGetMediaLinkRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodGetMediaLinkResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodGetMediaRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodGetMediaResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodListMediaRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodListMediaResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodApplyUploadRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodApplyUploadResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodCommitUploadRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodCommitUploadResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodGetTaskRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodGetTaskResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodPullUploadRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodPullUploadResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodSingleFileUploadResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodUploadPartResponse.json diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaSecExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaSecExtensions.cs index ccc69de0..31f17f5a 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaSecExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteWxaSecExtensions.cs @@ -153,5 +153,281 @@ namespace SKIT.FlurlHttpClient.Wechat.Api return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } #endregion + + #region Vod + #region Vod/Upload + /// + /// 异步调用 [POST] /wxa/sec/vod/singlefileupload 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/mini-drama/mini_drama.html#_1-1-%E5%8D%95%E4%B8%AA%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0 + /// + /// + /// + /// + /// + public static async Task ExecuteWxaSecVodSingleFileUploadAsync(this WechatApiClient client, Models.WxaSecVodSingleFileUploadRequest 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 + .CreateRequest(request, HttpMethod.Post, "wxa", "sec", "vod", "singlefileupload") + .SetQueryParam("access_token", request.AccessToken); + + using var httpContent = Utilities.FileHttpContentBuilder.Build(fileName: $"{request.MediaName}.{request.MediaType}", fileBytes: request.MediaFileBytes, fileContentType: "video/mp4", formDataName: "media_data"); + if (request.CoverType != null) httpContent.Add(new StringContent(request.CoverType), "cover_type"); + if (request.CoverFileBytes != null) httpContent.Add(new ByteArrayContent(request.CoverFileBytes), "cover_data"); + if (request.SourceContext != null) httpContent.Add(new StringContent(request.SourceContext), "source_context"); + return await client.SendRequestAsync(flurlReq, httpContent: httpContent, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /wxa/sec/vod/pullupload 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/mini-drama/mini_drama.html#_1-2-%E6%8B%89%E5%8F%96%E4%B8%8A%E4%BC%A0 + /// + /// + /// + /// + /// + public static async Task ExecuteWxaSecVodPullUploadAsync(this WechatApiClient client, Models.WxaSecVodPullUploadRequest 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 + .CreateRequest(request, HttpMethod.Post, "wxa", "sec", "vod", "pullupload") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /wxa/sec/vod/gettask 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/mini-drama/mini_drama.html#_1-3-%E6%9F%A5%E8%AF%A2%E4%BB%BB%E5%8A%A1 + /// + /// + /// + /// + /// + public static async Task ExecuteWxaSecVodGetTaskAsync(this WechatApiClient client, Models.WxaSecVodGetTaskRequest 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 + .CreateRequest(request, HttpMethod.Post, "wxa", "sec", "vod", "gettask") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /wxa/sec/vod/applyupload 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/mini-drama/mini_drama.html#_1-4-%E7%94%B3%E8%AF%B7%E5%88%86%E7%89%87%E4%B8%8A%E4%BC%A0 + /// + /// + /// + /// + /// + public static async Task ExecuteWxaSecVodApplyUploadAsync(this WechatApiClient client, Models.WxaSecVodApplyUploadRequest 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 + .CreateRequest(request, HttpMethod.Post, "wxa", "sec", "vod", "applyupload") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /wxa/sec/vod/uploadpart 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/mini-drama/mini_drama.html#_1-5-%E4%B8%8A%E4%BC%A0%E5%88%86%E7%89%87 + /// + /// + /// + /// + /// + public static async Task ExecuteWxaSecVodUploadPartAsync(this WechatApiClient client, Models.WxaSecVodUploadPartRequest 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 + .CreateRequest(request, HttpMethod.Post, "wxa", "sec", "vod", "uploadpart") + .SetQueryParam("access_token", request.AccessToken); + + using var httpContent = Utilities.FileHttpContentBuilder.Build(fileName: string.Empty, fileBytes: request.FileBytes, fileContentType: "application/octet-stream", formDataName: "data"); + httpContent.Add(new StringContent(request.UploadId), "upload_id"); + httpContent.Add(new StringContent(request.PartNumber.ToString()), "part_number"); + httpContent.Add(new StringContent(request.FileType.ToString()), "resource_type"); + return await client.SendRequestAsync(flurlReq, httpContent: httpContent, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /wxa/sec/vod/commitupload 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/mini-drama/mini_drama.html#_1-6-%E7%A1%AE%E8%AE%A4%E4%B8%8A%E4%BC%A0 + /// + /// + /// + /// + /// + public static async Task ExecuteWxaSecVodCommitUploadAsync(this WechatApiClient client, Models.WxaSecVodCommitUploadRequest 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 + .CreateRequest(request, HttpMethod.Post, "wxa", "sec", "vod", "commitupload") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion + + #region /Vod/Media + /// + /// 异步调用 [POST] /wxa/sec/vod/listmedia 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/mini-drama/mini_drama.html#_2-1-%E8%8E%B7%E5%8F%96%E5%AA%92%E8%B5%84%E5%88%97%E8%A1%A8 + /// + /// + /// + /// + /// + public static async Task ExecuteWxaSecVodListMediaAsync(this WechatApiClient client, Models.WxaSecVodListMediaRequest 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 + .CreateRequest(request, HttpMethod.Post, "wxa", "sec", "vod", "listmedia") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /wxa/sec/vod/getmedia 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/mini-drama/mini_drama.html#_2-2-%E8%8E%B7%E5%8F%96%E5%AA%92%E8%B5%84%E8%AF%A6%E7%BB%86%E4%BF%A1%E6%81%AF + /// + /// + /// + /// + /// + public static async Task ExecuteWxaSecVodGetMediaAsync(this WechatApiClient client, Models.WxaSecVodGetMediaRequest 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 + .CreateRequest(request, HttpMethod.Post, "wxa", "sec", "vod", "getmedia") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /wxa/sec/vod/getmedialink 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/mini-drama/mini_drama.html#_2-3-%E8%8E%B7%E5%8F%96%E5%AA%92%E8%B5%84%E6%92%AD%E6%94%BE%E9%93%BE%E6%8E%A5 + /// + /// + /// + /// + /// + public static async Task ExecuteWxaSecVodGetMediaLinkAsync(this WechatApiClient client, Models.WxaSecVodGetMediaLinkRequest 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 + .CreateRequest(request, HttpMethod.Post, "wxa", "sec", "vod", "getmedialink") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /wxa/sec/vod/deletemedia 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/mini-drama/mini_drama.html#_2-4-%E5%88%A0%E9%99%A4%E5%AA%92%E8%B5%84 + /// + /// + /// + /// + /// + public static async Task ExecuteWxaSecVodDeleteMediaAsync(this WechatApiClient client, Models.WxaSecVodDeleteMediaRequest 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 + .CreateRequest(request, HttpMethod.Post, "wxa", "sec", "vod", "deletemedia") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion + + #region /Vod/Drama + /// + /// 异步调用 [POST] /wxa/sec/vod/auditdrama 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/mini-drama/mini_drama.html#_3-1-%E5%89%A7%E7%9B%AE%E6%8F%90%E5%AE%A1 + /// + /// + /// + /// + /// + public static async Task ExecuteWxaSecVodAuditDramaAsync(this WechatApiClient client, Models.WxaSecVodAuditDramaRequest 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 + .CreateRequest(request, HttpMethod.Post, "wxa", "sec", "vod", "auditdrama") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /wxa/sec/vod/listdramas 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/mini-drama/mini_drama.html#_3-2-%E8%8E%B7%E5%8F%96%E5%89%A7%E7%9B%AE%E5%88%97%E8%A1%A8 + /// + /// + /// + /// + /// + public static async Task ExecuteWxaSecVodListDramasAsync(this WechatApiClient client, Models.WxaSecVodListDramasRequest 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 + .CreateRequest(request, HttpMethod.Post, "wxa", "sec", "vod", "listdramas") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /wxa/sec/vod/getdrama 接口。 + /// REF: https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/mini-drama/mini_drama.html#_3-3-%E8%8E%B7%E5%8F%96%E5%89%A7%E7%9B%AE%E4%BF%A1%E6%81%AF + /// + /// + /// + /// + /// + public static async Task ExecuteWxaSecVodGetDramaAsync(this WechatApiClient client, Models.WxaSecVodGetDramaRequest 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 + .CreateRequest(request, HttpMethod.Post, "wxa", "sec", "vod", "getdrama") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion + #endregion } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMedia/CgibinMediaUploadImageRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMedia/CgibinMediaUploadImageRequest.cs index 8018a672..0970d0b5 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMedia/CgibinMediaUploadImageRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinMedia/CgibinMediaUploadImageRequest.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace SKIT.FlurlHttpClient.Wechat.Api.Models { diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Drama/WxaSecVodAuditDramaRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Drama/WxaSecVodAuditDramaRequest.cs new file mode 100644 index 00000000..6a663947 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Drama/WxaSecVodAuditDramaRequest.cs @@ -0,0 +1,80 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/auditdrama 接口的请求。 + /// + public class WxaSecVodAuditDramaRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置剧目 ID。 + /// + [Newtonsoft.Json.JsonProperty("drama_id")] + [System.Text.Json.Serialization.JsonPropertyName("drama_id")] + public long? DramaId { get; set; } + + /// + /// 获取或设置剧名。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string? Name { get; set; } + + /// + /// 获取或设置描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string? Description { get; set; } + + /// + /// 获取或设置媒资文件数量。 + /// + [Newtonsoft.Json.JsonProperty("media_count")] + [System.Text.Json.Serialization.JsonPropertyName("media_count")] + public int? MediaCount { get; set; } + + /// + /// 获取或设置媒资文件 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("media_id_list")] + [System.Text.Json.Serialization.JsonPropertyName("media_id_list")] + public IList? MediaIdList { get; set; } + + /// + /// 获取或设置制作方。 + /// + [Newtonsoft.Json.JsonProperty("producer")] + [System.Text.Json.Serialization.JsonPropertyName("producer")] + public string? Producer { get; set; } + + /// + /// 获取或设置编剧。 + /// + [Newtonsoft.Json.JsonProperty("playwright")] + [System.Text.Json.Serialization.JsonPropertyName("playwright")] + public string? Playwright { get; set; } + + /// + /// 获取或设置封面图片 MediaId。 + /// + [Newtonsoft.Json.JsonProperty("cover_material_id")] + [System.Text.Json.Serialization.JsonPropertyName("cover_material_id")] + public string? CoverMaterialMediaId { get; set; } + + /// + /// 获取或设置广播电视节目制作经营许可证 MediaId。 + /// + [Newtonsoft.Json.JsonProperty("production_license_material_id")] + [System.Text.Json.Serialization.JsonPropertyName("production_license_material_id")] + public string? ProductionLicenseMaterialMediaId { get; set; } + + /// + /// 获取或设置剧目播放授权材料 MediaId。 + /// + [Newtonsoft.Json.JsonProperty("authorized_material_id")] + [System.Text.Json.Serialization.JsonPropertyName("authorized_material_id")] + public string? AuthorizationMaterialMediaId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Drama/WxaSecVodAuditDramaResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Drama/WxaSecVodAuditDramaResponse.cs new file mode 100644 index 00000000..d98f1982 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Drama/WxaSecVodAuditDramaResponse.cs @@ -0,0 +1,16 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/auditdrama 接口的响应。 + /// + public class WxaSecVodAuditDramaResponse : WechatApiResponse + { + /// + /// 获取或设置剧目 ID。 + /// + [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; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Drama/WxaSecVodGetDramaRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Drama/WxaSecVodGetDramaRequest.cs new file mode 100644 index 00000000..2d276b48 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Drama/WxaSecVodGetDramaRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/getdrama 接口的请求。 + /// + public class WxaSecVodGetDramaRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置剧目 ID。 + /// + [Newtonsoft.Json.JsonProperty("drama_id")] + [System.Text.Json.Serialization.JsonPropertyName("drama_id")] + public long DramaId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Drama/WxaSecVodGetDramaResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Drama/WxaSecVodGetDramaResponse.cs new file mode 100644 index 00000000..dea6b323 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Drama/WxaSecVodGetDramaResponse.cs @@ -0,0 +1,46 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/getdrama 接口的响应。 + /// + public class WxaSecVodGetDramaResponse : WechatApiResponse + { + public static class Types + { + public class DramaInfo : WxaSecVodListDramasResponse.Types.DramaInfo + { + public static new class Types + { + public class Media : WxaSecVodListDramasResponse.Types.DramaInfo.Types.Media + { + } + + public class AuditDetail : WxaSecVodListDramasResponse.Types.DramaInfo.Types.AuditDetail + { + } + } + + /// + /// 获取或设置媒资文件列表。 + /// + [Newtonsoft.Json.JsonProperty("media_list")] + [System.Text.Json.Serialization.JsonPropertyName("media_list")] + public new Types.Media[] MediaList { get; set; } = default!; + + /// + /// 获取或设置审核详细信息。 + /// + [Newtonsoft.Json.JsonProperty("audit_detail")] + [System.Text.Json.Serialization.JsonPropertyName("audit_detail")] + public new Types.AuditDetail? AuditDetail { get; set; } + } + } + + /// + /// 获取或设置剧目信息。 + /// + [Newtonsoft.Json.JsonProperty("drama_info")] + [System.Text.Json.Serialization.JsonPropertyName("drama_info")] + public Types.DramaInfo DramaInfo { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Drama/WxaSecVodListDramasRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Drama/WxaSecVodListDramasRequest.cs new file mode 100644 index 00000000..73b22b8f --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Drama/WxaSecVodListDramasRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/listdramas 接口的请求。 + /// + public class WxaSecVodListDramasRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置分页起始位置。 + /// + [Newtonsoft.Json.JsonProperty("offset")] + [System.Text.Json.Serialization.JsonPropertyName("offset")] + public int? Offset { get; set; } + + /// + /// 获取或设置分页每页数量。 + /// + [Newtonsoft.Json.JsonProperty("limit")] + [System.Text.Json.Serialization.JsonPropertyName("limit")] + public int? Limit { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Drama/WxaSecVodListDramasResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Drama/WxaSecVodListDramasResponse.cs new file mode 100644 index 00000000..a67bcd63 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Drama/WxaSecVodListDramasResponse.cs @@ -0,0 +1,130 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/listdramas 接口的响应。 + /// + public class WxaSecVodListDramasResponse : WechatApiResponse + { + public static class Types + { + public class DramaInfo + { + public static class Types + { + public class Media + { + /// + /// 获取或设置媒资文件 ID。 + /// + [Newtonsoft.Json.JsonProperty("media_id")] + [System.Text.Json.Serialization.JsonPropertyName("media_id")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public long MediaId { get; set; } + } + + public class AuditDetail + { + /// + /// 获取或设置状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public int Status { get; set; } + + /// + /// 获取或设置提审时间戳。 + /// + [Newtonsoft.Json.JsonProperty("create_time")] + [System.Text.Json.Serialization.JsonPropertyName("create_time")] + public long CreateTimestamp { get; set; } + + /// + /// 获取或设置审核时间戳。 + /// + [Newtonsoft.Json.JsonProperty("audit_time")] + [System.Text.Json.Serialization.JsonPropertyName("audit_time")] + public long? AuditTimestamp { get; set; } + } + } + + /// + /// 获取或设置剧目 ID。 + /// + [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; } + + /// + /// 获取或设置剧名。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = default!; + + /// + /// 获取或设置描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string Description { get; set; } = default!; + + /// + /// 获取或设置媒资文件数量。 + /// + [Newtonsoft.Json.JsonProperty("media_count")] + [System.Text.Json.Serialization.JsonPropertyName("media_count")] + public int MediaCount { get; set; } + + /// + /// 获取或设置媒资文件列表。 + /// + [Newtonsoft.Json.JsonProperty("media_list")] + [System.Text.Json.Serialization.JsonPropertyName("media_list")] + public Types.Media[] MediaList { get; set; } = default!; + + /// + /// 获取或设置创建时间戳。 + /// + [Newtonsoft.Json.JsonProperty("create_time")] + [System.Text.Json.Serialization.JsonPropertyName("create_time")] + public long CreateTimestamp { get; set; } + + /// + /// 获取或设置封面图片临时链接。 + /// + [Newtonsoft.Json.JsonProperty("cover_url")] + [System.Text.Json.Serialization.JsonPropertyName("cover_url")] + public string? CoverUrl { get; set; } + + /// + /// 获取或设置制作方。 + /// + [Newtonsoft.Json.JsonProperty("producer")] + [System.Text.Json.Serialization.JsonPropertyName("producer")] + public string? Producer { get; set; } + + /// + /// 获取或设置编剧。 + /// + [Newtonsoft.Json.JsonProperty("playwright")] + [System.Text.Json.Serialization.JsonPropertyName("playwright")] + public string? Playwright { get; set; } + + /// + /// 获取或设置审核详细信息。 + /// + [Newtonsoft.Json.JsonProperty("audit_detail")] + [System.Text.Json.Serialization.JsonPropertyName("audit_detail")] + public Types.AuditDetail? AuditDetail { get; set; } + } + } + + /// + /// 获取或设置剧目信息列表。 + /// + [Newtonsoft.Json.JsonProperty("drama_info_list")] + [System.Text.Json.Serialization.JsonPropertyName("drama_info_list")] + public Types.DramaInfo[] DramaInfoList { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodDeleteMediaRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodDeleteMediaRequest.cs new file mode 100644 index 00000000..64e1d559 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodDeleteMediaRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/deletemedia 接口的请求。 + /// + public class WxaSecVodDeleteMediaRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置媒资文件 ID。 + /// + [Newtonsoft.Json.JsonProperty("media_id")] + [System.Text.Json.Serialization.JsonPropertyName("media_id")] + public long MediaId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodDeleteMediaResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodDeleteMediaResponse.cs new file mode 100644 index 00000000..7bce8b2d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodDeleteMediaResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/deletemedia 接口的响应。 + /// + public class WxaSecVodDeleteMediaResponse : WechatApiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodGetMediaLinkRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodGetMediaLinkRequest.cs new file mode 100644 index 00000000..6a28df1d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodGetMediaLinkRequest.cs @@ -0,0 +1,56 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/getmedialink 接口的请求。 + /// + public class WxaSecVodGetMediaLinkRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置媒资文件 ID。 + /// + [Newtonsoft.Json.JsonProperty("media_id")] + [System.Text.Json.Serialization.JsonPropertyName("media_id")] + public long MediaId { get; set; } + + /// + /// 获取或设置过期时间戳。 + /// + [Newtonsoft.Json.JsonProperty("t")] + [System.Text.Json.Serialization.JsonPropertyName("t")] + public long ExpireTimestamp { get; set; } + + /// + /// 获取或设置试看时长(单位:秒)。 + /// + [Newtonsoft.Json.JsonProperty("expr")] + [System.Text.Json.Serialization.JsonPropertyName("expr")] + public int? ExperienceTime { get; set; } + + /// + /// 获取或设置最多允许多少个不同 IP 的终端播放。 + /// + [Newtonsoft.Json.JsonProperty("rlimit")] + [System.Text.Json.Serialization.JsonPropertyName("rlimit")] + public int? IpLimit { get; set; } + + /// + /// 获取或设置允许访问的域名列表。 + /// + [Newtonsoft.Json.JsonProperty("whref")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.TextualStringListWithCommaSplitConverter))] + [System.Text.Json.Serialization.JsonPropertyName("whref")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.TextualStringListWithCommaSplitConverter))] + public IList? DomainWhiteList { get; set; } + + /// + /// 获取或设置禁止访问的域名列表。 + /// + [Newtonsoft.Json.JsonProperty("bkref")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.TextualStringListWithCommaSplitConverter))] + [System.Text.Json.Serialization.JsonPropertyName("bkref")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.TextualStringListWithCommaSplitConverter))] + public IList? DomainBlackList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodGetMediaLinkResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodGetMediaLinkResponse.cs new file mode 100644 index 00000000..d95e12d5 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodGetMediaLinkResponse.cs @@ -0,0 +1,71 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/getmedialink 接口的响应。 + /// + public class WxaSecVodGetMediaLinkResponse : WechatApiResponse + { + public static class Types + { + public class MediaInfo + { + /// + /// 获取或设置媒资文件 ID。 + /// + [Newtonsoft.Json.JsonProperty("media_id")] + [System.Text.Json.Serialization.JsonPropertyName("media_id")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public long MediaId { get; set; } + + /// + /// 获取或设置视频名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string MediaName { get; set; } = default!; + + /// + /// 获取或设置描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string Description { get; set; } = default!; + + /// + /// 获取或设置时长(单位:秒)。 + /// + [Newtonsoft.Json.JsonProperty("duration")] + [System.Text.Json.Serialization.JsonPropertyName("duration")] + public int Duration { get; set; } + + /// + /// 获取或设置封面图片临时链接。 + /// + [Newtonsoft.Json.JsonProperty("cover_url")] + [System.Text.Json.Serialization.JsonPropertyName("cover_url")] + public string CoverUrl { get; set; } = default!; + + /// + /// 获取或设置 MP4 视频临时链接。 + /// + [Newtonsoft.Json.JsonProperty("mp4_url")] + [System.Text.Json.Serialization.JsonPropertyName("mp4_url")] + public string VideoMp4Url { get; set; } = default!; + + /// + /// 获取或设置 HLS 视频临时链接。 + /// + [Newtonsoft.Json.JsonProperty("hls_url")] + [System.Text.Json.Serialization.JsonPropertyName("hls_url")] + public string VideoHlsUrl { get; set; } = default!; + } + } + + /// + /// 获取或设置媒资信息。 + /// + [Newtonsoft.Json.JsonProperty("media_info")] + [System.Text.Json.Serialization.JsonPropertyName("media_info")] + public Types.MediaInfo MediaInfo { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodGetMediaRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodGetMediaRequest.cs new file mode 100644 index 00000000..227664e3 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodGetMediaRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/getmedia 接口的请求。 + /// + public class WxaSecVodGetMediaRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置媒资文件 ID。 + /// + [Newtonsoft.Json.JsonProperty("media_id")] + [System.Text.Json.Serialization.JsonPropertyName("media_id")] + public long MediaId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodGetMediaResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodGetMediaResponse.cs new file mode 100644 index 00000000..e7405d21 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodGetMediaResponse.cs @@ -0,0 +1,35 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/getmedia 接口的响应。 + /// + public class WxaSecVodGetMediaResponse : WechatApiResponse + { + public static class Types + { + public class MediaInfo : WxaSecVodListMediaResponse.Types.MediaInfo + { + public static new class Types + { + public class AuditDetail : WxaSecVodListMediaResponse.Types.MediaInfo.Types.AuditDetail + { + } + } + + /// + /// 获取或设置审核详细信息。 + /// + [Newtonsoft.Json.JsonProperty("audit_detail")] + [System.Text.Json.Serialization.JsonPropertyName("audit_detail")] + public new Types.AuditDetail? AuditDetail { get; set; } + } + } + + /// + /// 获取或设置媒资信息。 + /// + [Newtonsoft.Json.JsonProperty("media_info")] + [System.Text.Json.Serialization.JsonPropertyName("media_info")] + public Types.MediaInfo MediaInfo { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodListMediaRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodListMediaRequest.cs new file mode 100644 index 00000000..40055a95 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodListMediaRequest.cs @@ -0,0 +1,50 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/listmedia 接口的请求。 + /// + public class WxaSecVodListMediaRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置所属剧目 ID。 + /// + [Newtonsoft.Json.JsonProperty("drama_id")] + [System.Text.Json.Serialization.JsonPropertyName("drama_id")] + public long? DramaId { get; set; } + + /// + /// 获取或设置视频名称。 + /// + [Newtonsoft.Json.JsonProperty("media_name")] + [System.Text.Json.Serialization.JsonPropertyName("media_name")] + public string? MediaName { get; set; } + + /// + /// 获取或设置媒资上传开始时间戳。 + /// + [Newtonsoft.Json.JsonProperty("start_time")] + [System.Text.Json.Serialization.JsonPropertyName("start_time")] + public long? StartTimestamp { get; set; } + + /// + /// 获取或设置媒资上传结束时间戳。 + /// + [Newtonsoft.Json.JsonProperty("end_time")] + [System.Text.Json.Serialization.JsonPropertyName("end_time")] + public long? EndTimestamp { get; set; } + + /// + /// 获取或设置分页起始位置。 + /// + [Newtonsoft.Json.JsonProperty("offset")] + [System.Text.Json.Serialization.JsonPropertyName("offset")] + public int? Offset { get; set; } + + /// + /// 获取或设置分页每页数量。 + /// + [Newtonsoft.Json.JsonProperty("limit")] + [System.Text.Json.Serialization.JsonPropertyName("limit")] + public int? Limit { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodListMediaResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodListMediaResponse.cs new file mode 100644 index 00000000..7cc690cd --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Media/WxaSecVodListMediaResponse.cs @@ -0,0 +1,156 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/listmedia 接口的响应。 + /// + public class WxaSecVodListMediaResponse : WechatApiResponse + { + public static class Types + { + public class MediaInfo + { + public static class Types + { + public class AuditDetail + { + /// + /// 获取或设置状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public int Status { get; set; } + + /// + /// 获取或设置提审时间戳。 + /// + [Newtonsoft.Json.JsonProperty("create_time")] + [System.Text.Json.Serialization.JsonPropertyName("create_time")] + public long CreateTimestamp { get; set; } + + /// + /// 获取或设置审核时间戳。 + /// + [Newtonsoft.Json.JsonProperty("audit_time")] + [System.Text.Json.Serialization.JsonPropertyName("audit_time")] + public long? AuditTimestamp { get; set; } + + /// + /// 获取或设置审核备注。 + /// + [Newtonsoft.Json.JsonProperty("reason")] + [System.Text.Json.Serialization.JsonPropertyName("reason")] + public string? Reason { get; set; } + + /// + /// 获取或设置审核证据截图 MediaId 列表。 + /// + [Newtonsoft.Json.JsonProperty("evidence_material_id_list")] + [System.Text.Json.Serialization.JsonPropertyName("evidence_material_id_list")] + public string[]? EvidenceMaterialMediaIdList { get; set; } + } + } + + /// + /// 获取或设置所属剧目 ID。 + /// + [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; } + + /// + /// 获取或设置描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string? Description { get; set; } + + /// + /// 获取或设置媒资文件 ID。 + /// + [Newtonsoft.Json.JsonProperty("media_id")] + [System.Text.Json.Serialization.JsonPropertyName("media_id")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public long MediaId { get; set; } + + /// + /// 获取或设置视频名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string MediaName { get; set; } = default!; + + /// + /// 获取或设置文件大小(单位:字节)。 + /// + [Newtonsoft.Json.JsonProperty("file_size")] + [System.Text.Json.Serialization.JsonPropertyName("file_size")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public int FileSize { get; set; } + + /// + /// 获取或设置时长(单位:秒)。 + /// + [Newtonsoft.Json.JsonProperty("duration")] + [System.Text.Json.Serialization.JsonPropertyName("duration")] + public int Duration { get; set; } + + /// + /// 获取或设置创建时间戳。 + /// + [Newtonsoft.Json.JsonProperty("create_time")] + [System.Text.Json.Serialization.JsonPropertyName("create_time")] + public long CreateTimestamp { get; set; } + + /// + /// 获取或设置过期时间戳。 + /// + [Newtonsoft.Json.JsonProperty("expire_time")] + [System.Text.Json.Serialization.JsonPropertyName("expire_time")] + public long ExpireTimestamp { get; set; } + + /// + /// 获取或设置封面图片临时链接。 + /// + [Newtonsoft.Json.JsonProperty("cover_url")] + [System.Text.Json.Serialization.JsonPropertyName("cover_url")] + public string? CoverUrl { get; set; } + + /// + /// 获取或设置原始视频临时链接。 + /// + [Newtonsoft.Json.JsonProperty("original_url")] + [System.Text.Json.Serialization.JsonPropertyName("original_url")] + public string? VideoOriginalUrl { get; set; } + + /// + /// 获取或设置 MP4 视频临时链接。 + /// + [Newtonsoft.Json.JsonProperty("mp4_url")] + [System.Text.Json.Serialization.JsonPropertyName("mp4_url")] + public string? VideoMp4Url { get; set; } + + /// + /// 获取或设置 HLS 视频临时链接。 + /// + [Newtonsoft.Json.JsonProperty("hls_url")] + [System.Text.Json.Serialization.JsonPropertyName("hls_url")] + public string? VideoHlsUrl { get; set; } + + /// + /// 获取或设置审核详细信息。 + /// + [Newtonsoft.Json.JsonProperty("audit_detail")] + [System.Text.Json.Serialization.JsonPropertyName("audit_detail")] + public Types.AuditDetail? AuditDetail { get; set; } + } + } + + /// + /// 获取或设置媒资信息列表。 + /// + [Newtonsoft.Json.JsonProperty("media_info_list")] + [System.Text.Json.Serialization.JsonPropertyName("media_info_list")] + public Types.MediaInfo[] MediaInfoList { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodApplyUploadRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodApplyUploadRequest.cs new file mode 100644 index 00000000..f19829f6 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodApplyUploadRequest.cs @@ -0,0 +1,36 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/applyupload 接口的请求。 + /// + public class WxaSecVodApplyUploadRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置视频名称。 + /// + [Newtonsoft.Json.JsonProperty("media_name")] + [System.Text.Json.Serialization.JsonPropertyName("media_name")] + public string MediaName { get; set; } = string.Empty; + + /// + /// 获取或设置视频格式。 + /// + [Newtonsoft.Json.JsonProperty("media_type")] + [System.Text.Json.Serialization.JsonPropertyName("media_type")] + public string MediaType { get; set; } = string.Empty; + + /// + /// 获取或设置视频封面图片格式。 + /// + [Newtonsoft.Json.JsonProperty("cover_type")] + [System.Text.Json.Serialization.JsonPropertyName("cover_type")] + public string? CoverType { get; set; } + + /// + /// 获取或设置来源上下文。 + /// + [Newtonsoft.Json.JsonProperty("source_context")] + [System.Text.Json.Serialization.JsonPropertyName("source_context")] + public string? SourceContext { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodApplyUploadResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodApplyUploadResponse.cs new file mode 100644 index 00000000..fd65d7e7 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodApplyUploadResponse.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/applyupload 接口的响应。 + /// + public class WxaSecVodApplyUploadResponse : WechatApiResponse + { + /// + /// 获取或设置分片上传 ID。 + /// + [Newtonsoft.Json.JsonProperty("upload_id")] + [System.Text.Json.Serialization.JsonPropertyName("upload_id")] + public string UploadId { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodCommitUploadRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodCommitUploadRequest.cs new file mode 100644 index 00000000..07257892 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodCommitUploadRequest.cs @@ -0,0 +1,51 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/commitupload 接口的请求。 + /// + public class WxaSecVodCommitUploadRequest : WechatApiRequest, IInferable + { + public static class Types + { + public class PartInfo + { + /// + /// 获取或设置分片编号。 + /// + [Newtonsoft.Json.JsonProperty("part_number")] + [System.Text.Json.Serialization.JsonPropertyName("part_number")] + public int PartNumber { get; set; } + + /// + /// 获取或设置分片标识。 + /// + [Newtonsoft.Json.JsonProperty("etag")] + [System.Text.Json.Serialization.JsonPropertyName("etag")] + public string ETag { get; set; } = string.Empty; + } + } + + /// + /// 获取或设置分片上传 ID。 + /// + [Newtonsoft.Json.JsonProperty("upload_id")] + [System.Text.Json.Serialization.JsonPropertyName("upload_id")] + public string UploadId { get; set; } = string.Empty; + + /// + /// 获取或设置视频文件分片信息列表。 + /// + [Newtonsoft.Json.JsonProperty("media_part_infos")] + [System.Text.Json.Serialization.JsonPropertyName("media_part_infos")] + public IList MediaPartInfo { get; set; } = new List(); + + /// + /// 获取或设置视频封面图片文件分片信息列表。 + /// + [Newtonsoft.Json.JsonProperty("cover_part_infos")] + [System.Text.Json.Serialization.JsonPropertyName("cover_part_infos")] + public IList? CoverPartInfo { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodCommitUploadResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodCommitUploadResponse.cs new file mode 100644 index 00000000..f9b703ea --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodCommitUploadResponse.cs @@ -0,0 +1,16 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/commitupload 接口的响应。 + /// + public class WxaSecVodCommitUploadResponse : WechatApiResponse + { + /// + /// 获取或设置媒资文件 ID。 + /// + [Newtonsoft.Json.JsonProperty("media_id")] + [System.Text.Json.Serialization.JsonPropertyName("media_id")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public long MediaId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodGetTaskRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodGetTaskRequest.cs new file mode 100644 index 00000000..f447a198 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodGetTaskRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/gettask 接口的请求。 + /// + public class WxaSecVodGetTaskRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置拉取上传任务 ID。 + /// + [Newtonsoft.Json.JsonProperty("task_id")] + [System.Text.Json.Serialization.JsonPropertyName("task_id")] + public long TaskId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodGetTaskResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodGetTaskResponse.cs new file mode 100644 index 00000000..bef6d076 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodGetTaskResponse.cs @@ -0,0 +1,79 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/gettask 接口的响应。 + /// + public class WxaSecVodGetTaskResponse : WechatApiResponse + { + public static class Types + { + public class Task + { + /// + /// 获取或设置拉取上传任务 ID。 + /// + [Newtonsoft.Json.JsonProperty("id")] + [System.Text.Json.Serialization.JsonPropertyName("id")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public long Id { get; set; } + + /// + /// 获取或设置任务类型。 + /// + [Newtonsoft.Json.JsonProperty("task_type")] + [System.Text.Json.Serialization.JsonPropertyName("task_type")] + public int Type { get; set; } + + /// + /// 获取或设置任务状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public int Status { get; set; } + + /// + /// 获取或设置任务错误码。 + /// + [Newtonsoft.Json.JsonProperty("errcode")] + [System.Text.Json.Serialization.JsonPropertyName("errcode")] + public int ErrorCode { get; set; } + + /// + /// 获取或设置任务错误原因。 + /// + [Newtonsoft.Json.JsonProperty("errmsg")] + [System.Text.Json.Serialization.JsonPropertyName("errmsg")] + public string? ErrorMessage { get; set; } + + /// + /// 获取或设置创建时间戳。 + /// + [Newtonsoft.Json.JsonProperty("create_time")] + [System.Text.Json.Serialization.JsonPropertyName("create_time")] + public long? CreateTimestamp { get; set; } + + /// + /// 获取或设置完成时间戳。 + /// + [Newtonsoft.Json.JsonProperty("finish_time")] + [System.Text.Json.Serialization.JsonPropertyName("finish_time")] + public long? FinishTimestamp { get; set; } + + /// + /// 获取或设置媒体文件 ID。 + /// + [Newtonsoft.Json.JsonProperty("media_id")] + [System.Text.Json.Serialization.JsonPropertyName("media_id")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public long? MediaId { get; set; } + } + } + + /// + /// 获取或设置拉取上传任务信息。 + /// + [Newtonsoft.Json.JsonProperty("task_info")] + [System.Text.Json.Serialization.JsonPropertyName("task_info")] + public Types.Task Task { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodPullUploadRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodPullUploadRequest.cs new file mode 100644 index 00000000..93ae6cfb --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodPullUploadRequest.cs @@ -0,0 +1,36 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/pullupload 接口的请求。 + /// + public class WxaSecVodPullUploadRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置视频名称。 + /// + [Newtonsoft.Json.JsonProperty("media_name")] + [System.Text.Json.Serialization.JsonPropertyName("media_name")] + public string MediaName { get; set; } = string.Empty; + + /// + /// 获取或设置视频 URL。 + /// + [Newtonsoft.Json.JsonProperty("media_url")] + [System.Text.Json.Serialization.JsonPropertyName("media_url")] + public string MediaUrl { get; set; } = string.Empty; + + /// + /// 获取或设置视频封面 URL。 + /// + [Newtonsoft.Json.JsonProperty("cover_url")] + [System.Text.Json.Serialization.JsonPropertyName("cover_url")] + public string? CoverUrl { get; set; } + + /// + /// 获取或设置来源上下文。 + /// + [Newtonsoft.Json.JsonProperty("source_context")] + [System.Text.Json.Serialization.JsonPropertyName("source_context")] + public string? SourceContext { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodPullUploadResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodPullUploadResponse.cs new file mode 100644 index 00000000..642d4244 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodPullUploadResponse.cs @@ -0,0 +1,16 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/pullupload 接口的响应。 + /// + public class WxaSecVodPullUploadResponse : WechatApiResponse + { + /// + /// 获取或设置拉取上传任务 ID。 + /// + [Newtonsoft.Json.JsonProperty("task_id")] + [System.Text.Json.Serialization.JsonPropertyName("task_id")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public long TaskId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodSingleFileUploadRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodSingleFileUploadRequest.cs new file mode 100644 index 00000000..f363c66c --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodSingleFileUploadRequest.cs @@ -0,0 +1,52 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/singlefileupload 接口的请求。 + /// + public class WxaSecVodSingleFileUploadRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置视频名称。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string MediaName { get; set; } = string.Empty; + + /// + /// 获取或设置视频格式。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string MediaType { get; set; } = string.Empty; + + /// + /// 获取或设置视频文件字节数组。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public byte[] MediaFileBytes { get; set; } = Array.Empty(); + + /// + /// 获取或设置视频封面图片格式。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? CoverType { get; set; } + + /// + /// 获取或设置视频封面文件字节数组。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public byte[]? CoverFileBytes { get; set; } + + /// + /// 获取或设置来源上下文。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? SourceContext { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodSingleFileUploadResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodSingleFileUploadResponse.cs new file mode 100644 index 00000000..11257106 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodSingleFileUploadResponse.cs @@ -0,0 +1,16 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/singlefileupload 接口的响应。 + /// + public class WxaSecVodSingleFileUploadResponse : WechatApiResponse + { + /// + /// 获取或设置媒资文件 ID。 + /// + [Newtonsoft.Json.JsonProperty("media_id")] + [System.Text.Json.Serialization.JsonPropertyName("media_id")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public long MediaId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodUploadPartRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodUploadPartRequest.cs new file mode 100644 index 00000000..9ca10623 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodUploadPartRequest.cs @@ -0,0 +1,38 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/uploadpart 接口的请求。 + /// + public class WxaSecVodUploadPartRequest : WechatApiRequest, IInferable + { + /// + /// 获取或设置分片上传 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string UploadId { get; set; } = string.Empty; + + /// + /// 获取或设置分片编号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int PartNumber { get; set; } + + /// + /// 获取或设置分片文件资源类型。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int FileType { get; set; } + + /// + /// 获取或设置分片文件字节数组。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public byte[] FileBytes { get; set; } = Array.Empty(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodUploadPartResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodUploadPartResponse.cs new file mode 100644 index 00000000..9e2bd3f8 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/WxaSec/Vod/Upload/WxaSecVodUploadPartResponse.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /wxa/sec/vod/uploadpart 接口的响应。 + /// + public class WxaSecVodUploadPartResponse : WechatApiResponse + { + /// + /// 获取或设置根据分片内容生成的标识。 + /// + [Newtonsoft.Json.JsonProperty("etag")] + [System.Text.Json.Serialization.JsonPropertyName("etag")] + public string ETag { get; set; } = default!; + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Drama/WxaSecVodAuditDramaRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Drama/WxaSecVodAuditDramaRequest.json new file mode 100644 index 00000000..7d1ecea3 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Drama/WxaSecVodAuditDramaRequest.json @@ -0,0 +1,11 @@ +{ + "name": "这是剧名", + "media_count": 2, + "media_id_list": [ 20001, 20002 ], + "producer": "制作方名", + "playwright": "编剧名", + "description": "很有意思的一部剧", + "cover_material_id": "1223", + "production_license_material_id": "12233", + "authorized_material_id": "122344" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Drama/WxaSecVodAuditDramaResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Drama/WxaSecVodAuditDramaResponse.json new file mode 100644 index 00000000..5f93f088 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Drama/WxaSecVodAuditDramaResponse.json @@ -0,0 +1,5 @@ +{ + "errcode": 0, + "errmsg": "ok", + "drama_id": 10001 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Drama/WxaSecVodGetDramaRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Drama/WxaSecVodGetDramaRequest.json new file mode 100644 index 00000000..ca4ef82d --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Drama/WxaSecVodGetDramaRequest.json @@ -0,0 +1,3 @@ +{ + "drama_id": 10001 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Drama/WxaSecVodGetDramaResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Drama/WxaSecVodGetDramaResponse.json new file mode 100644 index 00000000..19e34df7 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Drama/WxaSecVodGetDramaResponse.json @@ -0,0 +1,22 @@ +{ + "errcode": 0, + "errmsg": "ok", + "drama_info": { + "drama_id": 28918028, + "create_time": 1682214878, + "name": "我的中国梦", + "playwright": "编剧名", + "producer": "制作方名", + "cover_url": "https://developers.weixin.qq.com/test.jpg", + "media_count": 2, + "media_list": [ + { "media_id": 10001 }, + { "media_id": 10002 } + ], + "audit_detail": { + "status": 3, + "create_time": 1682215878, + "audit_time": 1682235878 + } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Drama/WxaSecVodListDramasRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Drama/WxaSecVodListDramasRequest.json new file mode 100644 index 00000000..f1261a2f --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Drama/WxaSecVodListDramasRequest.json @@ -0,0 +1,4 @@ +{ + "offset": 0, + "limit": 10 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Drama/WxaSecVodListDramasResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Drama/WxaSecVodListDramasResponse.json new file mode 100644 index 00000000..7035cf05 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Drama/WxaSecVodListDramasResponse.json @@ -0,0 +1,24 @@ +{ + "errcode": 0, + "errmsg": "ok", + "drama_info_list": [ + { + "drama_id": 28918028, + "create_time": 1682214878, + "name": "我的中国梦", + "playwright": "编剧名", + "producer": "制作方名", + "cover_url": "https://developers.weixin.qq.com/test.jpg", + "media_count": 2, + "media_list": [ + { "media_id": 10001 }, + { "media_id": 10002 } + ], + "audit_detail": { + "status": 3, + "create_time": 1682215878, + "audit_time": 1682235878 + } + } + ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodDeleteMediaRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodDeleteMediaRequest.json new file mode 100644 index 00000000..df5289b7 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodDeleteMediaRequest.json @@ -0,0 +1,3 @@ +{ + "media_id": 28918028 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodGetMediaLinkRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodGetMediaLinkRequest.json new file mode 100644 index 00000000..965363da --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodGetMediaLinkRequest.json @@ -0,0 +1,4 @@ +{ + "media_id": 28918028, + "t": 1689990878 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodGetMediaLinkResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodGetMediaLinkResponse.json new file mode 100644 index 00000000..1ae10640 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodGetMediaLinkResponse.json @@ -0,0 +1,13 @@ +{ + "errcode": 0, + "errmsg": "ok", + "media_info": { + "media_id": 28918028, + "duration": 120, + "name": "我的中国梦 - 第1集", + "description": "剧情非常精彩哦", + "cover_url": "https://developers.weixin.qq.com/test.jpg", + "mp4_url": "https://developers.weixin.qq.com/test-encode.mp4", + "hls_url": "https://developers.weixin.qq.com/test-encode.m3u8" + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodGetMediaRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodGetMediaRequest.json new file mode 100644 index 00000000..df5289b7 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodGetMediaRequest.json @@ -0,0 +1,3 @@ +{ + "media_id": 28918028 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodGetMediaResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodGetMediaResponse.json new file mode 100644 index 00000000..210395b3 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodGetMediaResponse.json @@ -0,0 +1,27 @@ +{ + "errcode": 0, + "errmsg": "ok", + "media_info": { + "media_id": 28918028, + "create_time": 1682214878, + "expire_time": 1689990878, + "drama_id": 4907, + "file_size": "9849163", + "duration": 120, + "name": "我的中国梦 - 第1集", + "description": "剧情非常精彩哦", + "cover_url": "https://developers.weixin.qq.com/test.jpg", + "original_url": "https://developers.weixin.qq.com/test.mp4", + "mp4_url": "", + "hls_url": "", + "audit_detail": { + "status": 3, + "create_time": 1682215878, + "audit_time": 1682235878, + "reason": "", + "evidence_material_id_list": [ + "ivpvxwtX5GNzkCi6aX12f_VIFmGKiiwW5fkbISkZcamr6g_XrWqHkxB22MMAmIShb6rKOrS7" + ] + } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodListMediaRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodListMediaRequest.json new file mode 100644 index 00000000..58c8111f --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodListMediaRequest.json @@ -0,0 +1,4 @@ +{ + "drama_id": 20001, + "limit": 20 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodListMediaResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodListMediaResponse.json new file mode 100644 index 00000000..13683c18 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Media/WxaSecVodListMediaResponse.json @@ -0,0 +1,29 @@ +{ + "errcode": 0, + "errmsg": "ok", + "media_info_list": [ + { + "media_id": 28918028, + "create_time": 1682214878, + "expire_time": 1689990878, + "drama_id": 4907, + "file_size": "9849163", + "duration": 120, + "name": "我的中国梦 - 第1集", + "description": "剧情非常精彩哦", + "cover_url": "https://developers.weixin.qq.com/test.jpg", + "original_url": "https://developers.weixin.qq.com/test.mp4", + "mp4_url": "", + "hls_url": "", + "audit_detail": { + "status": 3, + "create_time": 1682215878, + "audit_time": 1682235878, + "reason": "", + "evidence_material_id_list": [ + "ivpvxwtX5GNzkCi6aX12f_VIFmGKiiwW5fkbISkZcamr6g_XrWqHkxB22MMAmIShb6rKOrS7" + ] + } + } + ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodApplyUploadRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodApplyUploadRequest.json new file mode 100644 index 00000000..95310dc1 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodApplyUploadRequest.json @@ -0,0 +1,5 @@ +{ + "media_type": "MP4", + "cover_type": "JPG", + "media_name": "我的中国梦 - 第1集" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodApplyUploadResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodApplyUploadResponse.json new file mode 100644 index 00000000..d0783a82 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodApplyUploadResponse.json @@ -0,0 +1,5 @@ +{ + "errcode": 0, + "errmsg": "ok", + "upload_id": "123456" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodCommitUploadRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodCommitUploadRequest.json new file mode 100644 index 00000000..ed5c6b2d --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodCommitUploadRequest.json @@ -0,0 +1,17 @@ +{ + "upload_id": "abcdefg12345", + "media_part_infos": [ + { + "part_number": 1, + "etag": "\"d899fbd1e06109ea2e4550f5751c88d6\"" + }, + { + "part_number": 2, + "etag": "\"jfb9892jfnhda2e4550f5bvhju9392af\"" + }, + { + "part_number": 3, + "etag": "\"bifh9u92wjefvjhytvn9u2898ef9uhea\"" + } + ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodCommitUploadResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodCommitUploadResponse.json new file mode 100644 index 00000000..5078d9c8 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodCommitUploadResponse.json @@ -0,0 +1,5 @@ +{ + "errcode": 0, + "errmsg": "ok", + "media_id": 123456 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodGetTaskRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodGetTaskRequest.json new file mode 100644 index 00000000..4c6c3b90 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodGetTaskRequest.json @@ -0,0 +1,3 @@ +{ + "task_id": 8412368 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodGetTaskResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodGetTaskResponse.json new file mode 100644 index 00000000..77e8c8d9 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodGetTaskResponse.json @@ -0,0 +1,14 @@ +{ + "errcode": 0, + "errmsg": "ok", + "task_info": { + "id": 8412368, + "task_type": 1, + "status": 3, + "errcode": 0, + "errmsg": "", + "create_time": 1682214878, + "finish_time": 1682214907, + "media_id": 28918028 + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodPullUploadRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodPullUploadRequest.json new file mode 100644 index 00000000..4b9b900c --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodPullUploadRequest.json @@ -0,0 +1,5 @@ +{ + "media_url": "https://developers.weixin.qq.com/test.mp4", + "cover_url": "https://developers.weixin.qq.com/test.jpg", + "media_name": "我的中国梦 - 第1集" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodPullUploadResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodPullUploadResponse.json new file mode 100644 index 00000000..6a865899 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodPullUploadResponse.json @@ -0,0 +1,5 @@ +{ + "errcode": 0, + "errmsg": "ok", + "task_id": 123456 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodSingleFileUploadResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodSingleFileUploadResponse.json new file mode 100644 index 00000000..5078d9c8 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodSingleFileUploadResponse.json @@ -0,0 +1,5 @@ +{ + "errcode": 0, + "errmsg": "ok", + "media_id": 123456 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodUploadPartResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodUploadPartResponse.json new file mode 100644 index 00000000..d738ea96 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaSec/Vod/Upload/WxaSecVodUploadPartResponse.json @@ -0,0 +1,5 @@ +{ + "errcode": 0, + "errmsg": "ok", + "etag": "d899fbd1e06109ea2e4550f5751c88d6" +}