From aa3d766284729f9af3e787e1dd36b5d456de3a11 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Sat, 20 Nov 2021 14:15:59 +0800 Subject: [PATCH] =?UTF-8?q?feat(wxapi):=20=E6=96=B0=E5=A2=9E=E7=AC=AC?= =?UTF-8?q?=E4=B8=89=E6=96=B9=E5=B9=B3=E5=8F=B0=E6=9C=8D=E5=8A=A1=E5=99=A8?= =?UTF-8?q?=E5=9F=9F=E5=90=8D=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 --- ...extualStringArrayWithSemicolonConverter.cs | 33 ++++++++++ .../List[int]/TextualInt32IListConverter.cs | 2 +- ...extualStringIListWithSemicolonConverter.cs | 44 ++++++++++++++ ...TextualStringListWithSemicolonConverter.cs | 47 +++++++++++++++ ...extualStringArrayWithSemicolonConverter.cs | 23 +++++++ ...extualStringIListWithSemicolonConverter.cs | 23 +++++++ ...TextualStringListWithSemicolonConverter.cs | 37 ++++++++++++ ...iClientExecuteCgibinComponentExtensions.cs | 60 +++++++++++++++++++ ...ApiClientExecuteCgibinOpenApiExtensions.cs | 3 + ...binComponentGetDomainConfirmFileRequest.cs | 15 +++++ ...inComponentGetDomainConfirmFileResponse.cs | 22 +++++++ ...ibinComponentModifyWxaJumpDomainRequest.cs | 40 +++++++++++++ ...binComponentModifyWxaJumpDomainResponse.cs | 35 +++++++++++ ...inComponentModifyWxaServerDomainRequest.cs | 40 +++++++++++++ ...nComponentModifyWxaServerDomainResponse.cs | 35 +++++++++++ ...nComponentGetDomainConfirmFileRequest.json | 1 + ...ComponentGetDomainConfirmFileResponse.json | 6 ++ ...inComponentModifyWxaJumpDomainRequest.json | 5 ++ ...nComponentModifyWxaJumpDomainResponse.json | 6 ++ ...ComponentModifyWxaServerDomainRequest.json | 5 ++ ...omponentModifyWxaServerDomainResponse.json | 6 ++ 21 files changed, 487 insertions(+), 1 deletion(-) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Converters/Newtonsoft.Json/Array[string]/TextualStringArrayWithSemicolonConverter.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Converters/Newtonsoft.Json/List[string]/TextualStringIListWithSemicolonConverter.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Converters/Newtonsoft.Json/List[string]/TextualStringListWithSemicolonConverter.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Converters/System.Text.Json/Array[string]/TextualStringArrayWithSemicolonConverter.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Converters/System.Text.Json/List[string]/TextualStringIListWithSemicolonConverter.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Converters/System.Text.Json/List[string]/TextualStringListWithSemicolonConverter.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinComponent/CgibinComponentGetDomainConfirmFileRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinComponent/CgibinComponentGetDomainConfirmFileResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinComponent/CgibinComponentModifyWxaJumpDomainRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinComponent/CgibinComponentModifyWxaJumpDomainResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinComponent/CgibinComponentModifyWxaServerDomainRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinComponent/CgibinComponentModifyWxaServerDomainResponse.cs create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentGetDomainConfirmFileRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentGetDomainConfirmFileResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentModifyWxaJumpDomainRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentModifyWxaJumpDomainResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentModifyWxaServerDomainRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentModifyWxaServerDomainResponse.json diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Converters/Newtonsoft.Json/Array[string]/TextualStringArrayWithSemicolonConverter.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Converters/Newtonsoft.Json/Array[string]/TextualStringArrayWithSemicolonConverter.cs new file mode 100644 index 00000000..9dfb63c2 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Converters/Newtonsoft.Json/Array[string]/TextualStringArrayWithSemicolonConverter.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace Newtonsoft.Json.Converters +{ + internal class TextualStringArrayWithSemicolonConverter : JsonConverter + { + private readonly JsonConverter?> _converter = new TextualStringListWithSemicolonConverter(); + + public override bool CanRead + { + get { return true; } + } + + public override bool CanWrite + { + get { return true; } + } + + public override string[]? ReadJson(JsonReader reader, Type objectType, string[]? existingValue, bool hasExistingValue, JsonSerializer serializer) + { + return _converter.ReadJson(reader, objectType, existingValue?.ToList(), hasExistingValue, serializer)?.ToArray(); + } + + public override void WriteJson(JsonWriter writer, string[]? value, JsonSerializer serializer) + { + _converter.WriteJson(writer, value?.ToList(), serializer); + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Converters/Newtonsoft.Json/List[int]/TextualInt32IListConverter.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Converters/Newtonsoft.Json/List[int]/TextualInt32IListConverter.cs index f47838fa..8d8aff6a 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Converters/Newtonsoft.Json/List[int]/TextualInt32IListConverter.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Converters/Newtonsoft.Json/List[int]/TextualInt32IListConverter.cs @@ -7,7 +7,7 @@ namespace Newtonsoft.Json.Converters { internal class TextualInt32IListConverter : JsonConverter?> { - private readonly JsonConverter?> _converter = new StringTypedInt32ListConverter(); + private readonly JsonConverter?> _converter = new TextualInt32ListConverter(); public override bool CanRead { diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Converters/Newtonsoft.Json/List[string]/TextualStringIListWithSemicolonConverter.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Converters/Newtonsoft.Json/List[string]/TextualStringIListWithSemicolonConverter.cs new file mode 100644 index 00000000..8dd0e46b --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Converters/Newtonsoft.Json/List[string]/TextualStringIListWithSemicolonConverter.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace Newtonsoft.Json.Converters +{ + internal class TextualStringIListWithSemicolonConverter : JsonConverter?> + { + private readonly JsonConverter?> _converter = new TextualStringListWithSemicolonConverter(); + + public override bool CanRead + { + get { return true; } + } + + public override bool CanWrite + { + get { return true; } + } + + public override IList? ReadJson(JsonReader reader, Type objectType, IList? existingValue, bool hasExistingValue, JsonSerializer serializer) + { + return _converter.ReadJson(reader, objectType, ConvertIListToList(existingValue), hasExistingValue, serializer); + } + + public override void WriteJson(JsonWriter writer, IList? value, JsonSerializer serializer) + { + _converter.WriteJson(writer, ConvertIListToList(value), serializer); + } + + private List? ConvertIListToList(IList? src) + { + if (src == null) + return null; + + List? dest = src as List; + if (dest != null) + return dest; + + return new List(src); + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Converters/Newtonsoft.Json/List[string]/TextualStringListWithSemicolonConverter.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Converters/Newtonsoft.Json/List[string]/TextualStringListWithSemicolonConverter.cs new file mode 100644 index 00000000..eac1e618 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Converters/Newtonsoft.Json/List[string]/TextualStringListWithSemicolonConverter.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace Newtonsoft.Json.Converters +{ + internal class TextualStringListWithSemicolonConverter : JsonConverter?> + { + public override bool CanRead + { + get { return true; } + } + + public override bool CanWrite + { + get { return true; } + } + + public override List? ReadJson(JsonReader reader, Type objectType, List? existingValue, bool hasExistingValue, JsonSerializer serializer) + { + if (reader.TokenType == JsonToken.Null) + { + return null; + } + else if (reader.TokenType == JsonToken.String) + { + string? value = serializer.Deserialize(reader); + if (value == null) + return existingValue; + + return value.Split(';').ToList(); + } + + throw new JsonReaderException(); + } + + public override void WriteJson(JsonWriter writer, List? value, JsonSerializer serializer) + { + if (value != null) + writer.WriteValue(string.Join(";", value)); + else + writer.WriteNull(); + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Converters/System.Text.Json/Array[string]/TextualStringArrayWithSemicolonConverter.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Converters/System.Text.Json/Array[string]/TextualStringArrayWithSemicolonConverter.cs new file mode 100644 index 00000000..d42e8cc7 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Converters/System.Text.Json/Array[string]/TextualStringArrayWithSemicolonConverter.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace System.Text.Json.Converters +{ + internal class TextualStringArrayWithSemicolonConverter : JsonConverter + { + private readonly JsonConverter?> _converter = new TextualStringListWithSemicolonConverter(); + + public override string[]? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + return _converter.Read(ref reader, typeToConvert, options)?.ToArray(); + } + + public override void Write(Utf8JsonWriter writer, string[]? value, JsonSerializerOptions options) + { + _converter.Write(writer, value?.ToList(), options); + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Converters/System.Text.Json/List[string]/TextualStringIListWithSemicolonConverter.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Converters/System.Text.Json/List[string]/TextualStringIListWithSemicolonConverter.cs new file mode 100644 index 00000000..9a3060e7 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Converters/System.Text.Json/List[string]/TextualStringIListWithSemicolonConverter.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace System.Text.Json.Converters +{ + internal class TextualStringIListWithSemicolonConverter : JsonConverter?> + { + private readonly JsonConverter?> _converter = new TextualStringListWithSemicolonConverter(); + + public override IList? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + return _converter.Read(ref reader, typeToConvert, options)?.ToArray(); + } + + public override void Write(Utf8JsonWriter writer, IList? value, JsonSerializerOptions options) + { + _converter.Write(writer, value?.ToList(), options); + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Converters/System.Text.Json/List[string]/TextualStringListWithSemicolonConverter.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Converters/System.Text.Json/List[string]/TextualStringListWithSemicolonConverter.cs new file mode 100644 index 00000000..ff05b04b --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Converters/System.Text.Json/List[string]/TextualStringListWithSemicolonConverter.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace System.Text.Json.Converters +{ + internal class TextualStringListWithSemicolonConverter : JsonConverter?> + { + public override List? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + if (reader.TokenType == JsonTokenType.Null) + { + return null; + } + else if (reader.TokenType == JsonTokenType.String) + { + string? value = reader.GetString(); + if (value == null) + return null; + + return value.Split(';').ToList(); + } + + throw new JsonException(); + } + + public override void Write(Utf8JsonWriter writer, List? value, JsonSerializerOptions options) + { + if (value != null) + writer.WriteStringValue(string.Join(";", value)); + else + writer.WriteNullValue(); + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinComponentExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinComponentExtensions.cs index 637eac82..7736619c 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinComponentExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinComponentExtensions.cs @@ -263,5 +263,65 @@ namespace SKIT.FlurlHttpClient.Wechat.Api return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } + + /// + /// 异步调用 [POST] /cgi-bin/component/modify_wxa_server_domain 接口。 + /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/ThirdParty/domain/modify_server_domain.html + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinComponentModifyWxaServerDomainAsync(this WechatApiClient client, Models.CgibinComponentModifyWxaServerDomainRequest 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, "cgi-bin", "component", "modify_wxa_server_domain") + .SetQueryParam("access_token", request.ComponentAccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/component/get_domain_confirmfile 接口。 + /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/ThirdParty/domain/get_domain_confirmfile.html + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinComponentGetDomainConfirmFileAsync(this WechatApiClient client, Models.CgibinComponentGetDomainConfirmFileRequest 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, "cgi-bin", "component", "get_domain_confirmfile") + .SetQueryParam("access_token", request.ComponentAccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/component/modify_wxa_jump_domain 接口。 + /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/ThirdParty/domain/modify_jump_domain.html + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinComponentModifyWxaJumpDomainAsync(this WechatApiClient client, Models.CgibinComponentModifyWxaJumpDomainRequest 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, "cgi-bin", "component", "modify_wxa_jump_domain") + .SetQueryParam("access_token", request.ComponentAccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinOpenApiExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinOpenApiExtensions.cs index 448802d4..638ff8a7 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinOpenApiExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Extensions/WechatApiClientExecuteCgibinOpenApiExtensions.cs @@ -14,6 +14,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api /// /// 异步调用 [POST] /cgi-bin/clear_quota 接口。 /// REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/API_Call_Limits.html + /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/openApi/clear_quota.html /// /// /// @@ -37,6 +38,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api /// /// 异步调用 [POST] /cgi-bin/openapi/quota/get 接口。 /// REF: https://developers.weixin.qq.com/doc/offiaccount/openApi/get_api_quota.html + /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/openApi/get_api_quota.html /// /// /// @@ -57,6 +59,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api /// /// 异步调用 [POST] /cgi-bin/openapi/rid/get 接口。 /// REF: https://developers.weixin.qq.com/doc/offiaccount/openApi/get_rid_info.html + /// REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/openApi/get_rid_info.html /// /// /// diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinComponent/CgibinComponentGetDomainConfirmFileRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinComponent/CgibinComponentGetDomainConfirmFileRequest.cs new file mode 100644 index 00000000..75596220 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinComponent/CgibinComponentGetDomainConfirmFileRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /cgi-bin/component/get_domain_confirmfile 接口的请求。 + /// + public class CgibinComponentGetDomainConfirmFileRequest : WechatApiRequest + { + /// + /// 获取或设置第三方平台 AccessToken。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ComponentAccessToken { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinComponent/CgibinComponentGetDomainConfirmFileResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinComponent/CgibinComponentGetDomainConfirmFileResponse.cs new file mode 100644 index 00000000..5e075d67 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinComponent/CgibinComponentGetDomainConfirmFileResponse.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /cgi-bin/component/get_domain_confirmfile 接口的响应。 + /// + public class CgibinComponentGetDomainConfirmFileResponse : WechatApiResponse + { + /// + /// 获取或设置文件名。 + /// + [Newtonsoft.Json.JsonProperty("file_name")] + [System.Text.Json.Serialization.JsonPropertyName("file_name")] + public string FileName { get; set; } = default!; + + /// + /// 获取或设置文件内容。 + /// + [Newtonsoft.Json.JsonProperty("file_content")] + [System.Text.Json.Serialization.JsonPropertyName("file_content")] + public string FileContent { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinComponent/CgibinComponentModifyWxaJumpDomainRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinComponent/CgibinComponentModifyWxaJumpDomainRequest.cs new file mode 100644 index 00000000..f3e79045 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinComponent/CgibinComponentModifyWxaJumpDomainRequest.cs @@ -0,0 +1,40 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /cgi-bin/component/modify_wxa_jump_domain 接口的请求。 + /// + public class CgibinComponentModifyWxaJumpDomainRequest : WechatApiRequest + { + /// + /// 获取或设置第三方平台 AccessToken。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ComponentAccessToken { get; set; } = string.Empty; + + /// + /// 获取或设置操作类型。 + /// + [Newtonsoft.Json.JsonProperty("action")] + [System.Text.Json.Serialization.JsonPropertyName("action")] + public string Action { get; set; } = string.Empty; + + /// + /// 获取或设置是否同时修改全网发布版本的值。 + /// + [Newtonsoft.Json.JsonProperty("is_modify_published_together")] + [System.Text.Json.Serialization.JsonPropertyName("is_modify_published_together")] + public bool? IsModifyPublishedTogether { get; set; } + + /// + /// 获取或设置业务域名列表。 + /// + [Newtonsoft.Json.JsonProperty("wxa_jump_h5_domain")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.TextualStringIListWithSemicolonConverter))] + [System.Text.Json.Serialization.JsonPropertyName("wxa_jump_h5_domain")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.TextualStringIListWithSemicolonConverter))] + public IList? WxaJumpH5DomainList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinComponent/CgibinComponentModifyWxaJumpDomainResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinComponent/CgibinComponentModifyWxaJumpDomainResponse.cs new file mode 100644 index 00000000..acce4f09 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinComponent/CgibinComponentModifyWxaJumpDomainResponse.cs @@ -0,0 +1,35 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /cgi-bin/component/modify_wxa_jump_domain 接口的响应。 + /// + public class CgibinComponentModifyWxaJumpDomainResponse : WechatApiResponse + { + /// + /// 获取或设置目前生效的全网发布版第三方平台小程序业务域名列表。 + /// + [Newtonsoft.Json.JsonProperty("published_wxa_jump_h5_domain")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.TextualStringArrayWithSemicolonConverter))] + [System.Text.Json.Serialization.JsonPropertyName("published_wxa_jump_h5_domain")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.TextualStringArrayWithSemicolonConverter))] + public string[]? PublishedWxaJumpH5DomainList { get; set; } + + /// + /// 获取或设置目前生效的测试版第三方平台小程序业务域名列表。 + /// + [Newtonsoft.Json.JsonProperty("testing_wxa_jump_h5_domain")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.TextualStringArrayWithSemicolonConverter))] + [System.Text.Json.Serialization.JsonPropertyName("testing_wxa_jump_h5_domain")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.TextualStringArrayWithSemicolonConverter))] + public string[]? TestingWxaJumpH5DomainList { get; set; } + + /// + /// 获取或设置未通过验证的第三方平台小程序业务域名列表。 + /// + [Newtonsoft.Json.JsonProperty("invalid_wxa_jump_h5_domain")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.TextualStringArrayWithSemicolonConverter))] + [System.Text.Json.Serialization.JsonPropertyName("invalid_wxa_jump_h5_domain")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.TextualStringArrayWithSemicolonConverter))] + public string[]? InvalidWxaJumpH5DomainList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinComponent/CgibinComponentModifyWxaServerDomainRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinComponent/CgibinComponentModifyWxaServerDomainRequest.cs new file mode 100644 index 00000000..28a1adb1 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinComponent/CgibinComponentModifyWxaServerDomainRequest.cs @@ -0,0 +1,40 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /cgi-bin/component/modify_wxa_server_domain 接口的请求。 + /// + public class CgibinComponentModifyWxaServerDomainRequest : WechatApiRequest + { + /// + /// 获取或设置第三方平台 AccessToken。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ComponentAccessToken { get; set; } = string.Empty; + + /// + /// 获取或设置操作类型。 + /// + [Newtonsoft.Json.JsonProperty("action")] + [System.Text.Json.Serialization.JsonPropertyName("action")] + public string Action { get; set; } = string.Empty; + + /// + /// 获取或设置是否同时修改全网发布版本的值。 + /// + [Newtonsoft.Json.JsonProperty("is_modify_published_together")] + [System.Text.Json.Serialization.JsonPropertyName("is_modify_published_together")] + public bool? IsModifyPublishedTogether { get; set; } + + /// + /// 获取或设置服务器域名列表。 + /// + [Newtonsoft.Json.JsonProperty("wxa_server_domain")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.TextualStringIListWithSemicolonConverter))] + [System.Text.Json.Serialization.JsonPropertyName("wxa_server_domain")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.TextualStringIListWithSemicolonConverter))] + public IList? WxaServerDomainList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinComponent/CgibinComponentModifyWxaServerDomainResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinComponent/CgibinComponentModifyWxaServerDomainResponse.cs new file mode 100644 index 00000000..6ce4763a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Api/Models/CgibinComponent/CgibinComponentModifyWxaServerDomainResponse.cs @@ -0,0 +1,35 @@ +namespace SKIT.FlurlHttpClient.Wechat.Api.Models +{ + /// + /// 表示 [POST] /cgi-bin/component/modify_wxa_server_domain 接口的响应。 + /// + public class CgibinComponentModifyWxaServerDomainResponse : WechatApiResponse + { + /// + /// 获取或设置目前生效的全网发布版第三方平台小程序服务器域名列表。 + /// + [Newtonsoft.Json.JsonProperty("published_wxa_server_domain")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.TextualStringArrayWithSemicolonConverter))] + [System.Text.Json.Serialization.JsonPropertyName("published_wxa_server_domain")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.TextualStringArrayWithSemicolonConverter))] + public string[]? PublishedWxaServerDomainList { get; set; } + + /// + /// 获取或设置目前生效的测试版第三方平台小程序服务器域名列表。 + /// + [Newtonsoft.Json.JsonProperty("testing_wxa_server_domain")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.TextualStringArrayWithSemicolonConverter))] + [System.Text.Json.Serialization.JsonPropertyName("testing_wxa_server_domain")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.TextualStringArrayWithSemicolonConverter))] + public string[]? TestingWxaServerDomainList { get; set; } + + /// + /// 获取或设置未通过验证的第三方平台小程序服务器域名列表。 + /// + [Newtonsoft.Json.JsonProperty("invalid_wxa_server_domain")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.TextualStringArrayWithSemicolonConverter))] + [System.Text.Json.Serialization.JsonPropertyName("invalid_wxa_server_domain")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.TextualStringArrayWithSemicolonConverter))] + public string[]? InvalidWxaServerDomainList { get; set; } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentGetDomainConfirmFileRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentGetDomainConfirmFileRequest.json new file mode 100644 index 00000000..22fdca1b --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentGetDomainConfirmFileRequest.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentGetDomainConfirmFileResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentGetDomainConfirmFileResponse.json new file mode 100644 index 00000000..b2b49344 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentGetDomainConfirmFileResponse.json @@ -0,0 +1,6 @@ +{ + "errcode": 0, + "errmsg": "ok", + "file_name": "xxx", + "file_content": "xxxxxx" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentModifyWxaJumpDomainRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentModifyWxaJumpDomainRequest.json new file mode 100644 index 00000000..5554c9f5 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentModifyWxaJumpDomainRequest.json @@ -0,0 +1,5 @@ +{ + "action": "delete", + "is_modify_published_together": false, + "wxa_jump_h5_domain": "www.qq.com;wx.qq.com" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentModifyWxaJumpDomainResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentModifyWxaJumpDomainResponse.json new file mode 100644 index 00000000..c224da84 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentModifyWxaJumpDomainResponse.json @@ -0,0 +1,6 @@ +{ + "errcode": 0, + "errmsg": "ok", + "published_wxa_jump_h5_domain": "www.qq.com;wx.qq.com", + "testing_wxa_jump_h5_domain": "www.qq.com;wx.qq.com" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentModifyWxaServerDomainRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentModifyWxaServerDomainRequest.json new file mode 100644 index 00000000..99802911 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentModifyWxaServerDomainRequest.json @@ -0,0 +1,5 @@ +{ + "action": "add", + "is_modify_published_together": true, + "wxa_server_domain": "www.qq.com;wx.qq.com" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentModifyWxaServerDomainResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentModifyWxaServerDomainResponse.json new file mode 100644 index 00000000..692b2ca2 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentModifyWxaServerDomainResponse.json @@ -0,0 +1,6 @@ +{ + "errcode": 0, + "errmsg": "ok", + "published_wxa_server_domain": "www.qq.com;wx.qq.com", + "testing_wxa_server_domain": "www.qq.com;wx.qq.com" +} \ No newline at end of file