From 41a20bbab4235c1a0c9b1a4ad6b982b0eeabbe3b Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Fri, 6 Aug 2021 15:55:10 +0800 Subject: [PATCH] =?UTF-8?q?feat(wxapi):=20=E6=96=B0=E5=A2=9E=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E4=BB=A3=E4=BA=91=E5=BC=80=E5=8F=91=E9=9D=99=E6=80=81?= =?UTF-8?q?=E7=BD=91=E7=AB=99=E7=AE=A1=E7=90=86=E7=9B=B8=E5=85=B3=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...tApiClientExecuteComponentTcbExtensions.cs | 82 +++++++++++++++++++ .../COS/ComponentTcbGetBucketResponse.cs | 2 +- .../ComponentTcbCreateStaticStoreRequest.cs | 25 ++++++ .../ComponentTcbCreateStaticStoreResponse.cs | 12 +++ .../ComponentTcbDescribeStaticStoreRequest.cs | 25 ++++++ ...ComponentTcbDescribeStaticStoreResponse.cs | 60 ++++++++++++++ .../ComponentTcbStaticFileListRequest.cs | 46 +++++++++++ .../ComponentTcbStaticFileListResponse.cs | 33 ++++++++ .../ComponentTcbStaticUploadFileRequest.cs | 32 ++++++++ .../ComponentTcbStaticUploadFileResponse.cs | 25 ++++++ 10 files changed, 341 insertions(+), 1 deletion(-) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbCreateStaticStoreRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbCreateStaticStoreResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbDescribeStaticStoreRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbDescribeStaticStoreResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticFileListRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticFileListResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticUploadFileRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticUploadFileResponse.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteComponentTcbExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteComponentTcbExtensions.cs index 10e4e1d6..8616302d 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteComponentTcbExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteComponentTcbExtensions.cs @@ -641,5 +641,87 @@ namespace SKIT.FlurlHttpClient.Wechat.Api return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } #endregion + + #region StaticStore + /// + /// 异步调用 [POST] /componenttcb/createstaticstore 接口。 + /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/CreateStaticStore.html + /// + /// + /// + /// + /// + public static async Task ExecuteComponentTcbCreateStaticStoreAsync(this WechatApiClient client, Models.ComponentTcbCreateStaticStoreRequest 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, "componenttcb", "createstaticstore") + .SetQueryParam("access_token", request.ComponentAccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /componenttcb/describestaticstore 接口。 + /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/DescribeStaticStore.html + /// + /// + /// + /// + /// + public static async Task ExecuteComponentTcbDescribeStaticStoreAsync(this WechatApiClient client, Models.ComponentTcbDescribeStaticStoreRequest 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, "componenttcb", "describestaticstore") + .SetQueryParam("access_token", request.ComponentAccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /componenttcb/staticfilelist 接口。 + /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/staticFileList.html + /// + /// + /// + /// + /// + public static async Task ExecuteComponentTcbStaticFileListAsync(this WechatApiClient client, Models.ComponentTcbStaticFileListRequest 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, "componenttcb", "staticfilelist") + .SetQueryParam("access_token", request.ComponentAccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /componenttcb/staticuploadfile 接口。 + /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/cloudbase/batch/staticUploadFile.html + /// + /// + /// + /// + /// + public static async Task ExecuteComponentTcbStaticUploadFileAsync(this WechatApiClient client, Models.ComponentTcbStaticUploadFileRequest 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, "componenttcb", "staticuploadfile") + .SetQueryParam("access_token", request.ComponentAccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbGetBucketResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbGetBucketResponse.cs index 193a0c0c..1612430e 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbGetBucketResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/COS/ComponentTcbGetBucketResponse.cs @@ -50,7 +50,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Models /// [Newtonsoft.Json.JsonProperty("contents")] [System.Text.Json.Serialization.JsonPropertyName("contents")] - public Types.File[] FileList6 { get; set; } = default!; + public Types.File[] FileList { get; set; } = default!; /// /// 获取或设置内容是否被截断。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbCreateStaticStoreRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbCreateStaticStoreRequest.cs new file mode 100644 index 00000000..ba1fc66d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbCreateStaticStoreRequest.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /componenttcb/createstaticstore 接口的请求。 + /// + public class ComponentTcbCreateStaticStoreRequest : WechatApiRequest + { + /// + /// 获取或设置第三方平台 AccessToken。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ComponentAccessToken { get; set; } = string.Empty; + + /// + /// 获取或设置环境 ID。 + /// + [Newtonsoft.Json.JsonProperty("env")] + [System.Text.Json.Serialization.JsonPropertyName("env")] + public string EnvironmentId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbCreateStaticStoreResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbCreateStaticStoreResponse.cs new file mode 100644 index 00000000..3614d387 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbCreateStaticStoreResponse.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /componenttcb/createstaticstore 接口的响应。 + /// + public class ComponentTcbCreateStaticStoreResponse : WechatApiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbDescribeStaticStoreRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbDescribeStaticStoreRequest.cs new file mode 100644 index 00000000..5e581584 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbDescribeStaticStoreRequest.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /componenttcb/describestaticstore 接口的请求。 + /// + public class ComponentTcbDescribeStaticStoreRequest : WechatApiRequest + { + /// + /// 获取或设置第三方平台 AccessToken。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ComponentAccessToken { get; set; } = string.Empty; + + /// + /// 获取或设置环境 ID。 + /// + [Newtonsoft.Json.JsonProperty("env")] + [System.Text.Json.Serialization.JsonPropertyName("env")] + public string EnvironmentId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbDescribeStaticStoreResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbDescribeStaticStoreResponse.cs new file mode 100644 index 00000000..a14e31b9 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbDescribeStaticStoreResponse.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /componenttcb/describestaticstore 接口的响应。 + /// + public class ComponentTcbDescribeStaticStoreResponse : WechatApiResponse + { + public static class Types + { + public class Website + { + /// + /// 获取或设置环境 ID。 + /// + [Newtonsoft.Json.JsonProperty("env")] + [System.Text.Json.Serialization.JsonPropertyName("env")] + public string EnvironmentId { get; set; } = default!; + + /// + /// 获取或设置域名。 + /// + [Newtonsoft.Json.JsonProperty("domain")] + [System.Text.Json.Serialization.JsonPropertyName("domain")] + public string Domain { get; set; } = default!; + + /// + /// 获取或设置存储桶。 + /// + [Newtonsoft.Json.JsonProperty("bucket")] + [System.Text.Json.Serialization.JsonPropertyName("bucket")] + public string Bucket { get; set; } = default!; + + /// + /// 获取或设置区域。 + /// + [Newtonsoft.Json.JsonProperty("regoin")] + [System.Text.Json.Serialization.JsonPropertyName("regoin")] + public string Region { get; set; } = default!; + + /// + /// 获取或设置状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public string Status { get; set; } = default!; + } + } + + + /// + /// 获取或设置网站列表。 + /// + [Newtonsoft.Json.JsonProperty("data")] + [System.Text.Json.Serialization.JsonPropertyName("data")] + public Types.Website[] WebsiteList { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticFileListRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticFileListRequest.cs new file mode 100644 index 00000000..756b245d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticFileListRequest.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /componenttcb/staticfilelist 接口的请求。 + /// + public class ComponentTcbStaticFileListRequest : WechatApiRequest + { + /// + /// 获取或设置第三方平台 AccessToken。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ComponentAccessToken { get; set; } = string.Empty; + + /// + /// 获取或设置环境 ID。 + /// + [Newtonsoft.Json.JsonProperty("env")] + [System.Text.Json.Serialization.JsonPropertyName("env")] + public string EnvironmentId { get; set; } = string.Empty; + + /// + /// 获取或设置前缀匹配。 + /// + [Newtonsoft.Json.JsonProperty("prefix")] + [System.Text.Json.Serialization.JsonPropertyName("prefix")] + public string? Prefix { get; set; } + + /// + /// 获取或设置定界符。 + /// + [Newtonsoft.Json.JsonProperty("delimiter")] + [System.Text.Json.Serialization.JsonPropertyName("delimiter")] + public string? Delimiter { get; set; } + + /// + /// 获取或设置标志位。 + /// + [Newtonsoft.Json.JsonProperty("marker")] + [System.Text.Json.Serialization.JsonPropertyName("marker")] + public string? Marker { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticFileListResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticFileListResponse.cs new file mode 100644 index 00000000..853403d5 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticFileListResponse.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /componenttcb/staticfilelist 接口的响应。 + /// + public class ComponentTcbStaticFileListResponse : WechatApiResponse + { + public static class Types + { + public class File : ComponentTcbGetBucketResponse.Types.File + { + } + } + + + /// + /// 获取或设置网站列表。 + /// + [Newtonsoft.Json.JsonProperty("contents")] + [System.Text.Json.Serialization.JsonPropertyName("contents")] + public Types.File[] FileList { get; set; } = default!; + + /// + /// 获取或设置内容是否被截断。 + /// + [Newtonsoft.Json.JsonProperty("is_truncated")] + [System.Text.Json.Serialization.JsonPropertyName("is_truncated")] + public bool IsTruncated { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticUploadFileRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticUploadFileRequest.cs new file mode 100644 index 00000000..b3394282 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticUploadFileRequest.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /componenttcb/staticuploadfile 接口的请求。 + /// + public class ComponentTcbStaticUploadFileRequest : WechatApiRequest + { + /// + /// 获取或设置第三方平台 AccessToken。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ComponentAccessToken { get; set; } = string.Empty; + + /// + /// 获取或设置环境 ID。 + /// + [Newtonsoft.Json.JsonProperty("env")] + [System.Text.Json.Serialization.JsonPropertyName("env")] + public string EnvironmentId { get; set; } = string.Empty; + + /// + /// 获取或设置上传文件名。 + /// + [Newtonsoft.Json.JsonProperty("filename")] + [System.Text.Json.Serialization.JsonPropertyName("filename")] + public string FileName { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticUploadFileResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticUploadFileResponse.cs new file mode 100644 index 00000000..25e9b57e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/ComponentTcb/StaticStore/ComponentTcbStaticUploadFileResponse.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /componenttcb/staticuploadfile 接口的响应。 + /// + public class ComponentTcbStaticUploadFileResponse : WechatApiResponse + { + /// + /// 获取或设置上传 URL。 + /// + [Newtonsoft.Json.JsonProperty("signed_url")] + [System.Text.Json.Serialization.JsonPropertyName("signed_url")] + public string Url { get; set; } = default!; + + /// + /// 获取或设置上传凭证。 + /// + [Newtonsoft.Json.JsonProperty("token")] + [System.Text.Json.Serialization.JsonPropertyName("token")] + public string Token { get; set; } = default!; + } +}