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" +}