From 7dd592b5f3b06fe220ebb1c6762feacbb81d5ed3 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Mon, 14 Mar 2022 17:02:10 +0800 Subject: [PATCH] =?UTF-8?q?feat(work):=20=E6=96=B0=E5=A2=9E=E4=BC=81?= =?UTF-8?q?=E4=B8=9A=E9=82=AE=E7=AE=B1=E5=8A=9F=E8=83=BD=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=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 --- ...WorkClientExecuteCgibinExmailExtensions.cs | 44 +++++++++++++++ .../CgibinExmailAccountActiveEmailRequest.cs | 0 .../CgibinExmailAccountActiveEmailResponse.cs | 0 .../CgibinExmailUserOptionGetRequest.cs | 24 +++++++++ .../CgibinExmailUserOptionGetResponse.cs | 45 ++++++++++++++++ .../CgibinExmailUserOptionUpdateRequest.cs | 54 +++++++++++++++++++ .../CgibinExmailUserOptionUpdateResponse.cs | 9 ++++ ...CgibinExmailAccountActiveEmailRequest.json | 0 ...gibinExmailAccountActiveEmailResponse.json | 0 .../CgibinExmailUserOptionGetRequest.json | 4 ++ .../CgibinExmailUserOptionGetResponse.json | 20 +++++++ .../CgibinExmailUserOptionUpdateRequest.json | 19 +++++++ .../CgibinExmailUserOptionUpdateResponse.json | 4 ++ 13 files changed, 223 insertions(+) rename src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/{ => Account}/CgibinExmailAccountActiveEmailRequest.cs (100%) rename src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/{ => Account}/CgibinExmailAccountActiveEmailResponse.cs (100%) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/UserOption/CgibinExmailUserOptionGetRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/UserOption/CgibinExmailUserOptionGetResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/UserOption/CgibinExmailUserOptionUpdateRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/UserOption/CgibinExmailUserOptionUpdateResponse.cs rename test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/{ => Account}/CgibinExmailAccountActiveEmailRequest.json (100%) rename test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/{ => Account}/CgibinExmailAccountActiveEmailResponse.json (100%) create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/UserOption/CgibinExmailUserOptionGetRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/UserOption/CgibinExmailUserOptionGetResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/UserOption/CgibinExmailUserOptionUpdateRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/UserOption/CgibinExmailUserOptionUpdateResponse.json diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExmailExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExmailExtensions.cs index 24c58001..6394b02d 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExmailExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinExmailExtensions.cs @@ -222,6 +222,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Work } #endregion + #region Account /// /// 异步调用 [POST] /cgi-bin/exmail/account/act_email 接口。 /// REF: https://developer.work.weixin.qq.com/document/path/95512 @@ -241,5 +242,48 @@ namespace SKIT.FlurlHttpClient.Wechat.Work return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } + #endregion + + #region UserOption + /// + /// 异步调用 [POST] /cgi-bin/exmail/useroption/get 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/95513 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinExmailUserOptionGetAsync(this WechatWorkClient client, Models.CgibinExmailUserOptionGetRequest 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", "exmail", "useroption", "get") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/exmail/useroption/update 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/95513 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinExmailUserOptionUpdateAsync(this WechatWorkClient client, Models.CgibinExmailUserOptionUpdateRequest 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", "exmail", "useroption", "update") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/CgibinExmailAccountActiveEmailRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/Account/CgibinExmailAccountActiveEmailRequest.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/CgibinExmailAccountActiveEmailRequest.cs rename to src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/Account/CgibinExmailAccountActiveEmailRequest.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/CgibinExmailAccountActiveEmailResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/Account/CgibinExmailAccountActiveEmailResponse.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/CgibinExmailAccountActiveEmailResponse.cs rename to src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/Account/CgibinExmailAccountActiveEmailResponse.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/UserOption/CgibinExmailUserOptionGetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/UserOption/CgibinExmailUserOptionGetRequest.cs new file mode 100644 index 00000000..ef2c35cb --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/UserOption/CgibinExmailUserOptionGetRequest.cs @@ -0,0 +1,24 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/exmail/useroption/get 接口的请求。 + /// + public class CgibinExmailUserOptionGetRequest : WechatWorkRequest + { + /// + /// 获取或设置成员账号。 + /// + [Newtonsoft.Json.JsonProperty("userid")] + [System.Text.Json.Serialization.JsonPropertyName("userid")] + public string? UserId { get; set; } + + /// + /// 获取或设置功能设置属性类型列表。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public IList TypeList { get; set; } = new List(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/UserOption/CgibinExmailUserOptionGetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/UserOption/CgibinExmailUserOptionGetResponse.cs new file mode 100644 index 00000000..d9b7d3ad --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/UserOption/CgibinExmailUserOptionGetResponse.cs @@ -0,0 +1,45 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/exmail/useroption/get 接口的响应。 + /// + public class CgibinExmailUserOptionGetResponse : WechatWorkResponse + { + public static class Types + { + public class UserOptionList + { + /// + /// 获取或设置功能设置列表。 + /// + [Newtonsoft.Json.JsonProperty("list")] + [System.Text.Json.Serialization.JsonPropertyName("list")] + public UserOptionItem[] Items { get; set; } = default!; + } + + public class UserOptionItem + { + /// + /// 获取或设置功能设置属性类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public int Type { get; set; } + + /// + /// 获取或设置功能设置属性值。 + /// + [Newtonsoft.Json.JsonProperty("value")] + [System.Text.Json.Serialization.JsonPropertyName("value")] + public string Value { get; set; } = default!; + } + } + + /// + /// 获取或设置功能设置列表。 + /// + [Newtonsoft.Json.JsonProperty("option")] + [System.Text.Json.Serialization.JsonPropertyName("option")] + public Types.UserOptionList UserOptionList { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/UserOption/CgibinExmailUserOptionUpdateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/UserOption/CgibinExmailUserOptionUpdateRequest.cs new file mode 100644 index 00000000..6f0d0a5d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/UserOption/CgibinExmailUserOptionUpdateRequest.cs @@ -0,0 +1,54 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/exmail/useroption/update 接口的请求。 + /// + public class CgibinExmailUserOptionUpdateRequest : WechatWorkRequest + { + public static class Types + { + public class UserOptionList + { + /// + /// 获取或设置功能设置列表。 + /// + [Newtonsoft.Json.JsonProperty("list")] + [System.Text.Json.Serialization.JsonPropertyName("list")] + public IList Items { get; set; } = new List(); + } + + public class UserOptionItem + { + /// + /// 获取或设置功能设置属性类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public int Type { get; set; } + + /// + /// 获取或设置功能设置属性值。 + /// + [Newtonsoft.Json.JsonProperty("value")] + [System.Text.Json.Serialization.JsonPropertyName("value")] + public string Value { get; set; } = string.Empty; + } + } + + /// + /// 获取或设置成员账号。 + /// + [Newtonsoft.Json.JsonProperty("userid")] + [System.Text.Json.Serialization.JsonPropertyName("userid")] + public string? UserId { get; set; } + + /// + /// 获取或设置功能设置列表。 + /// + [Newtonsoft.Json.JsonProperty("option")] + [System.Text.Json.Serialization.JsonPropertyName("option")] + public Types.UserOptionList UserOptionList { get; set; } = new Types.UserOptionList(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/UserOption/CgibinExmailUserOptionUpdateResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/UserOption/CgibinExmailUserOptionUpdateResponse.cs new file mode 100644 index 00000000..7e8bfd1b --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinExmail/UserOption/CgibinExmailUserOptionUpdateResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/exmail/useroption/update 接口的响应。 + /// + public class CgibinExmailUserOptionUpdateResponse : WechatWorkResponse + { + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/CgibinExmailAccountActiveEmailRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/Account/CgibinExmailAccountActiveEmailRequest.json similarity index 100% rename from test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/CgibinExmailAccountActiveEmailRequest.json rename to test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/Account/CgibinExmailAccountActiveEmailRequest.json diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/CgibinExmailAccountActiveEmailResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/Account/CgibinExmailAccountActiveEmailResponse.json similarity index 100% rename from test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/CgibinExmailAccountActiveEmailResponse.json rename to test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/Account/CgibinExmailAccountActiveEmailResponse.json diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/UserOption/CgibinExmailUserOptionGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/UserOption/CgibinExmailUserOptionGetRequest.json new file mode 100644 index 00000000..30274658 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/UserOption/CgibinExmailUserOptionGetRequest.json @@ -0,0 +1,4 @@ +{ + "userid": "zhangsan", + "type": [1, 2, 3] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/UserOption/CgibinExmailUserOptionGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/UserOption/CgibinExmailUserOptionGetResponse.json new file mode 100644 index 00000000..5a6ca78e --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/UserOption/CgibinExmailUserOptionGetResponse.json @@ -0,0 +1,20 @@ +{ + "errcode": 0, + "errmsg": "ok", + "option": { + "list": [ + { + "type": 1, + "value": "0" + }, + { + "type": 2, + "value": "1" + }, + { + "type": 3, + "value": "0" + } + ] + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/UserOption/CgibinExmailUserOptionUpdateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/UserOption/CgibinExmailUserOptionUpdateRequest.json new file mode 100644 index 00000000..47c2d119 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/UserOption/CgibinExmailUserOptionUpdateRequest.json @@ -0,0 +1,19 @@ +{ + "userid": "zhangsan", + "option": { + "list": [ + { + "type": 1, + "value": "0" + }, + { + "type": 2, + "value": "1" + }, + { + "type": 3, + "value": "0" + } + ] + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/UserOption/CgibinExmailUserOptionUpdateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/UserOption/CgibinExmailUserOptionUpdateResponse.json new file mode 100644 index 00000000..4dfc6cba --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinExmail/UserOption/CgibinExmailUserOptionUpdateResponse.json @@ -0,0 +1,4 @@ +{ + "errcode": 0, + "errmsg": "ok" +}