diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinWebDriveExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinWebDriveExtensions.cs index 4fdc8165..2cf6b06f 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinWebDriveExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinWebDriveExtensions.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Net.Http; using System.Threading; using System.Threading.Tasks; @@ -476,5 +476,47 @@ namespace SKIT.FlurlHttpClient.Wechat.Work return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } #endregion + + #region Manage + /// + /// 异步调用 [POST] /cgi-bin/wedrive/mng_pro_info 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/95861 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinWebDriveManageProfessionalInfoAsync(this WechatWorkClient client, Models.CgibinWebDriveManageProfessionalInfoRequest 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", "wedrive", "mng_pro_info") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /cgi-bin/wedrive/mng_capacity 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/95861 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinWebDriveManageCapacityAsync(this WechatWorkClient client, Models.CgibinWebDriveManageCapacityRequest 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", "wedrive", "mng_capacity") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWebDrive/Manage/CgibinWebDriveManageCapacityRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWebDrive/Manage/CgibinWebDriveManageCapacityRequest.cs new file mode 100644 index 00000000..8da4d2cb --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWebDrive/Manage/CgibinWebDriveManageCapacityRequest.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedrive/mng_capacity 接口的请求。 + /// + public class CgibinWebDriveManageCapacityRequest : WechatWorkRequest + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWebDrive/Manage/CgibinWebDriveManageCapacityResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWebDrive/Manage/CgibinWebDriveManageCapacityResponse.cs new file mode 100644 index 00000000..965dc13b --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWebDrive/Manage/CgibinWebDriveManageCapacityResponse.cs @@ -0,0 +1,36 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedrive/mng_capacity 接口的响应。 + /// + public class CgibinWebDriveManageCapacityResponse : WechatWorkResponse + { + /// + /// 获取或设置全员容量(单位:字节)。 + /// + [Newtonsoft.Json.JsonProperty("total_capacity_for_all")] + [System.Text.Json.Serialization.JsonPropertyName("total_capacity_for_all")] + public long TotalCapacityForAll { get; set; } + + /// + /// 获取或设置专业容量(单位:字节)。 + /// + [Newtonsoft.Json.JsonProperty("total_capacity_for_vip")] + [System.Text.Json.Serialization.JsonPropertyName("total_capacity_for_vip")] + public long TotalCapacityForVip { get; set; } + + /// + /// 获取或设置全员可用容量(单位:字节)。 + /// + [Newtonsoft.Json.JsonProperty("rest_capacity_for_all")] + [System.Text.Json.Serialization.JsonPropertyName("rest_capacity_for_all")] + public long RestCapacityForAll { get; set; } + + /// + /// 获取或设置专业可用容量(单位:字节)。 + /// + [Newtonsoft.Json.JsonProperty("rest_capacity_for_vip")] + [System.Text.Json.Serialization.JsonPropertyName("rest_capacity_for_vip")] + public long RestCapacityForVip { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWebDrive/Manage/CgibinWebDriveManageProfessionalInfoRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWebDrive/Manage/CgibinWebDriveManageProfessionalInfoRequest.cs new file mode 100644 index 00000000..5159e05b --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWebDrive/Manage/CgibinWebDriveManageProfessionalInfoRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedrive/mng_pro_info 接口的请求。 + /// + public class CgibinWebDriveManageProfessionalInfoRequest : WechatWorkRequest + { + /// + /// 获取或设置操作者成员账号。 + /// + [Newtonsoft.Json.JsonProperty("userid")] + [System.Text.Json.Serialization.JsonPropertyName("userid")] + public string? UserId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWebDrive/Manage/CgibinWebDriveManageProfessionalInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWebDrive/Manage/CgibinWebDriveManageProfessionalInfoResponse.cs new file mode 100644 index 00000000..38e1cc8a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWebDrive/Manage/CgibinWebDriveManageProfessionalInfoResponse.cs @@ -0,0 +1,36 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedrive/mng_pro_info 接口的响应。 + /// + public class CgibinWebDriveManageProfessionalInfoResponse : WechatWorkResponse + { + /// + /// 获取或设置是否是专业版。 + /// + [Newtonsoft.Json.JsonProperty("is_pro")] + [System.Text.Json.Serialization.JsonPropertyName("is_pro")] + public bool IsProfessional { get; set; } + + /// + /// 获取或设置 VIP 账号总数量。 + /// + [Newtonsoft.Json.JsonProperty("total_vip_acct_num")] + [System.Text.Json.Serialization.JsonPropertyName("total_vip_acct_num")] + public int TotalVipAccountCount { get; set; } + + /// + /// 获取或设置 VIP 账号已使用数量。 + /// + [Newtonsoft.Json.JsonProperty("use_vip_acct_num")] + [System.Text.Json.Serialization.JsonPropertyName("use_vip_acct_num")] + public int UsedVipAccountCount { get; set; } + + /// + /// 获取或设置专业版到期时间戳。 + /// + [Newtonsoft.Json.JsonProperty("pro_expire_time")] + [System.Text.Json.Serialization.JsonPropertyName("pro_expire_time")] + public long? ProfessionalExpireTimestamp { get; set; } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWebDrive/Manage/CgibinWebDriveManageCapacityResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWebDrive/Manage/CgibinWebDriveManageCapacityResponse.json new file mode 100644 index 00000000..0d9b8071 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWebDrive/Manage/CgibinWebDriveManageCapacityResponse.json @@ -0,0 +1,8 @@ +{ + "errcode": 0, + "errmsg": "ok", + "total_capacity_for_all": 22666689904640, + "total_capacity_for_vip": 22300038149020, + "rest_capacity_for_all": 0, + "rest_capacity_for_vip": 0 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWebDrive/Manage/CgibinWebDriveManageProfessionalInfoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWebDrive/Manage/CgibinWebDriveManageProfessionalInfoRequest.json new file mode 100644 index 00000000..c37144b9 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWebDrive/Manage/CgibinWebDriveManageProfessionalInfoRequest.json @@ -0,0 +1,3 @@ +{ + "userid": "USERID" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWebDrive/Manage/CgibinWebDriveManageProfessionalInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWebDrive/Manage/CgibinWebDriveManageProfessionalInfoResponse.json new file mode 100644 index 00000000..44bf05e1 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWebDrive/Manage/CgibinWebDriveManageProfessionalInfoResponse.json @@ -0,0 +1,8 @@ +{ + "errcode": 0, + "errmsg": "ok", + "is_pro": true, + "total_vip_acct_num": 10, + "use_vip_acct_num": 5, + "pro_expire_time": 1754827419 +}