diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExternalContactExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExternalContactExtensions.cs index e2eb9c3a..472aac8b 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExternalContactExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExternalContactExtensions.cs @@ -306,8 +306,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Work #region ContactWay /// /// 异步调用 [POST] /cgi-bin/externalcontact/add_contact_way 接口。 - /// REF: https://developer.work.weixin.qq.com/document/path/92572 - /// REF: https://developer.work.weixin.qq.com/document/path/92577 + /// REF: https://developer.work.weixin.qq.com/document/path/92228 + /// REF: https://developer.work.weixin.qq.com/document/path/96348 /// /// /// @@ -327,8 +327,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/get_contact_way 接口。 - /// REF: https://developer.work.weixin.qq.com/document/path/92572 - /// REF: https://developer.work.weixin.qq.com/document/path/92577 + /// REF: https://developer.work.weixin.qq.com/document/path/92228 + /// REF: https://developer.work.weixin.qq.com/document/path/96348 /// /// /// @@ -346,10 +346,31 @@ namespace SKIT.FlurlHttpClient.Wechat.Work return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } + /// + /// 异步调用 [POST] /cgi-bin/externalcontact/list_contact_way 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/92228 + /// REF: https://developer.work.weixin.qq.com/document/path/96348 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinExternalContactListContactWayAsync(this WechatWorkClient client, Models.CgibinExternalContactListContactWayRequest 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", "externalcontact", "list_contact_way") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + /// /// 异步调用 [POST] /cgi-bin/externalcontact/update_contact_way 接口。 - /// REF: https://developer.work.weixin.qq.com/document/path/92572 - /// REF: https://developer.work.weixin.qq.com/document/path/92577 + /// REF: https://developer.work.weixin.qq.com/document/path/92228 + /// REF: https://developer.work.weixin.qq.com/document/path/96348 /// /// /// @@ -369,8 +390,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Work /// /// 异步调用 [POST] /cgi-bin/externalcontact/del_contact_way 接口。 - /// REF: https://developer.work.weixin.qq.com/document/path/92572 - /// REF: https://developer.work.weixin.qq.com/document/path/92577 + /// REF: https://developer.work.weixin.qq.com/document/path/92228 + /// REF: https://developer.work.weixin.qq.com/document/path/96348 /// /// /// diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ContactWay/CgibinExternalContactListContactWayRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ContactWay/CgibinExternalContactListContactWayRequest.cs new file mode 100644 index 00000000..7f18494e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ContactWay/CgibinExternalContactListContactWayRequest.cs @@ -0,0 +1,36 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/externalcontact/list_contact_way 接口的请求。 + /// + public class CgibinExternalContactListContactWayRequest : WechatWorkRequest + { + /// + /// 获取或设置起始时间戳。 + /// + [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("limit")] + [System.Text.Json.Serialization.JsonPropertyName("limit")] + public int? Limit { get; set; } + + /// + /// 获取或设置翻页标记。 + /// + [Newtonsoft.Json.JsonProperty("cursor")] + [System.Text.Json.Serialization.JsonPropertyName("cursor")] + public string? Cursor { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ContactWay/CgibinExternalContactListContactWayResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ContactWay/CgibinExternalContactListContactWayResponse.cs new file mode 100644 index 00000000..ad823df6 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExternalContact/ContactWay/CgibinExternalContactListContactWayResponse.cs @@ -0,0 +1,35 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/externalcontact/list_contact_way 接口的响应。 + /// + public class CgibinExternalContactListContactWayResponse : WechatWorkResponse + { + public static class Types + { + public class ContactWay + { + /// + /// 获取或设置配置 ID。 + /// + [Newtonsoft.Json.JsonProperty("config_id")] + [System.Text.Json.Serialization.JsonPropertyName("config_id")] + public string ConfigId { get; set; } = default!; + } + } + + /// + /// 获取或设置联系方式列表。 + /// + [Newtonsoft.Json.JsonProperty("contact_way")] + [System.Text.Json.Serialization.JsonPropertyName("contact_way")] + public Types.ContactWay[] ContactWayList { get; set; } = default!; + + /// + /// 获取或设置翻页标记。 + /// + [Newtonsoft.Json.JsonProperty("next_cursor")] + [System.Text.Json.Serialization.JsonPropertyName("next_cursor")] + public string? NextCursor { get; set; } = default!; + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ContactWay/CgibinExternalContactListContactWayRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ContactWay/CgibinExternalContactListContactWayRequest.json new file mode 100644 index 00000000..b7c5795b --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ContactWay/CgibinExternalContactListContactWayRequest.json @@ -0,0 +1,6 @@ +{ + "start_time": 1622476800, + "end_time": 1625068800, + "cursor": "CURSOR", + "limit": 1000 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ContactWay/CgibinExternalContactListContactWayResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ContactWay/CgibinExternalContactListContactWayResponse.json new file mode 100644 index 00000000..72db1881 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExternalContact/ContactWay/CgibinExternalContactListContactWayResponse.json @@ -0,0 +1,13 @@ +{ + "errcode": 0, + "errmsg": "ok", + "contact_way": [ + { + "config_id": "534b63270045c9ABiKEE814ef56d91c62f" + }, + { + "config_id": "87bBiKEE811c62f63270041c62f5c9A4ef" + } + ], + "next_cursor": "NEXT_CURSOR" +}