diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinWebDriveExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinWebDriveExtensions.cs index 450b828b..d1f32dea 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinWebDriveExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinWebDriveExtensions.cs @@ -90,6 +90,26 @@ namespace SKIT.FlurlHttpClient.Wechat.Work return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } + /// + /// 异步调用 [POST] /cgi-bin/wedrive/new_space_info 接口。 + /// REF: https://developer.work.weixin.qq.com/document/path/97950 + /// + /// + /// + /// + /// + public static async Task ExecuteCgibinWebDriveNewSpaceInfoAsync(this WechatWorkClient client, Models.CgibinWebDriveNewSpaceInfoRequest 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", "new_space_info") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + /// /// 异步调用 [POST] /cgi-bin/wedrive/space_setting 接口。 /// REF: https://developer.work.weixin.qq.com/document/path/97876 diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWebDrive/Space/CgibinWebDriveNewSpaceInfoRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWebDrive/Space/CgibinWebDriveNewSpaceInfoRequest.cs new file mode 100644 index 00000000..b8db3cde --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWebDrive/Space/CgibinWebDriveNewSpaceInfoRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedrive/new_space_info 接口的请求。 + /// + public class CgibinWebDriveNewSpaceInfoRequest : WechatWorkRequest + { + /// + /// 获取或设置空间 ID。 + /// + [Newtonsoft.Json.JsonProperty("spaceid")] + [System.Text.Json.Serialization.JsonPropertyName("spaceid")] + public string SpaceId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWebDrive/Space/CgibinWebDriveNewSpaceInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWebDrive/Space/CgibinWebDriveNewSpaceInfoResponse.cs new file mode 100644 index 00000000..aa32b821 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinWebDrive/Space/CgibinWebDriveNewSpaceInfoResponse.cs @@ -0,0 +1,91 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/wedrive/new_space_info 接口的响应。 + /// + public class CgibinWebDriveNewSpaceInfoResponse : WechatWorkResponse + { + public static class Types + { + public class Space : CgibinWebDriveSpaceInfoResponse.Types.Space + { + public static new class Types + { + public class ACL : CgibinWebDriveSpaceInfoResponse.Types.Space.Types.ACL + { + } + + public class Authority : CgibinWebDriveSpaceInfoResponse.Types.Space.Types.Authority + { + } + + public class SecureSettings + { + /// + /// 获取或设置是否启用水印。 + /// + [Newtonsoft.Json.JsonProperty("enable_watermark")] + [System.Text.Json.Serialization.JsonPropertyName("enable_watermark")] + public bool EnableWatermark { get; set; } + + /// + /// 获取或设置是否启用保密模式。 + /// + [Newtonsoft.Json.JsonProperty("enable_confidential_mode")] + [System.Text.Json.Serialization.JsonPropertyName("enable_confidential_mode")] + public bool EnableConfidentialMode { get; set; } + + /// + /// 获取或设置是否通过链接加入空间无需审批。 + /// + [Newtonsoft.Json.JsonProperty("share_url_no_approve")] + [System.Text.Json.Serialization.JsonPropertyName("share_url_no_approve")] + public bool IsShareUrlNoApprove { get; set; } + + /// + /// 获取或设置邀请链接默认权限类型。 + /// + [Newtonsoft.Json.JsonProperty("share_url_no_approve_default_auth")] + [System.Text.Json.Serialization.JsonPropertyName("share_url_no_approve_default_auth")] + public int ShareUrlNoApproveDefaultAuthType { get; set; } + + /// + /// 获取或设置文件默认可查看范围。 + /// + [Newtonsoft.Json.JsonProperty("default_file_scope")] + [System.Text.Json.Serialization.JsonPropertyName("default_file_scope")] + public int DefaultFileScope { get; set; } + + /// + /// 获取或设置是否禁止文件分享到企业外。 + /// + [Newtonsoft.Json.JsonProperty("ban_share_external")] + [System.Text.Json.Serialization.JsonPropertyName("ban_share_external")] + public bool IsBanShareExternal { get; set; } + } + } + + /// + /// 获取或设置访问控制信息。 + /// + [Newtonsoft.Json.JsonProperty("auth_list")] + [System.Text.Json.Serialization.JsonPropertyName("auth_list")] + public new Types.ACL ACL { get; set; } = default!; + + /// + /// 获取或设置安全设置信息。 + /// + [Newtonsoft.Json.JsonProperty("secure_setting")] + [System.Text.Json.Serialization.JsonPropertyName("secure_setting")] + public Types.SecureSettings SecureSettings { get; set; } = default!; + } + } + + /// + /// 获取或设置空间信息。 + /// + [Newtonsoft.Json.JsonProperty("space_info")] + [System.Text.Json.Serialization.JsonPropertyName("space_info")] + public Types.Space Space { get; set; } = default!; + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWebDrive/Space/CgibinWebDriveNewSpaceInfoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWebDrive/Space/CgibinWebDriveNewSpaceInfoRequest.json new file mode 100644 index 00000000..c24f7078 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWebDrive/Space/CgibinWebDriveNewSpaceInfoRequest.json @@ -0,0 +1,3 @@ +{ + "spaceid": "SPACEID" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWebDrive/Space/CgibinWebDriveNewSpaceInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWebDrive/Space/CgibinWebDriveNewSpaceInfoResponse.json new file mode 100644 index 00000000..82b37cd1 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinWebDrive/Space/CgibinWebDriveNewSpaceInfoResponse.json @@ -0,0 +1,32 @@ +{ + "errcode": 0, + "errmsg": "ok", + "space_info": { + "spaceid": "SPACEID", + "space_name": "SPACE_NAME", + "auth_list": { + "auth_info": [ + { + "type": 1, + "userid": "USERID", + "auth": 1 + }, + { + "type": 2, + "departmentid": 1, + "auth": 7 + } + ], + "quit_userid": ["USERID1", "USERID2"] + }, + "space_sub_type": 0, + "secure_setting": { + "enable_watermark": true, + "share_url_no_approve": true, + "share_url_no_approve_default_auth": 1, + "enable_confidential_mode": true, + "default_file_scope": 1, + "ban_share_external": false + } + } +}