From 8270f7642a2d3b5a422573b093737ef2e010d996 Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Sat, 1 Feb 2025 23:38:56 +0800 Subject: [PATCH] =?UTF-8?q?feat(work):=20=E6=96=B0=E5=A2=9E=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E4=B8=8E=E6=99=BA=E8=83=BD=E4=B8=93=E5=8C=BA=E9=83=A8?= =?UTF-8?q?=E5=88=86=E5=9F=BA=E7=A1=80=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ChatArchive/AdvancedApiExpiredEvent.cs | 35 ++++++ .../AdvancedApiTrialExpiredEvent.cs | 37 +++++++ ...rkClientExecuteCgibinChatDataExtensions.cs | 100 ++++++++++++++++++ .../CgibinChatDataGetCorpAuthInfoRequest.cs | 9 ++ .../CgibinChatDataGetCorpAuthInfoResponse.cs | 90 ++++++++++++++++ .../CgibinChatDataSetLogLevelRequest.cs | 22 ++++ .../CgibinChatDataSetLogLevelResponse.cs | 9 ++ ...CgibinChatDataSetReceiveCallbackRequest.cs | 15 +++ ...gibinChatDataSetReceiveCallbackResponse.cs | 9 ++ .../CgibinChatDataUploadMediaRequest.cs | 38 +++++++ .../CgibinChatDataUploadMediaResponse.cs | 30 ++++++ .../ChatArchive/AdvancedApiExpiredEvent.xml | 10 ++ .../AdvancedApiTrialExpiredEvent.xml | 7 ++ ...CgibinChatDataGetCorpAuthInfoResponse.json | 30 ++++++ .../CgibinChatDataSetLogLevelRequest.json | 4 + ...ibinChatDataSetReceiveCallbackRequest.json | 3 + .../CgibinChatDataUploadMediaResponse.json | 7 ++ 17 files changed, 455 insertions(+) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Events/Service/ChatArchive/AdvancedApiExpiredEvent.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Events/Service/ChatArchive/AdvancedApiTrialExpiredEvent.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataGetCorpAuthInfoRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataGetCorpAuthInfoResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataSetLogLevelRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataSetLogLevelResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataSetReceiveCallbackRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataSetReceiveCallbackResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataUploadMediaRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataUploadMediaResponse.cs create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Service/ChatArchive/AdvancedApiExpiredEvent.xml create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Service/ChatArchive/AdvancedApiTrialExpiredEvent.xml create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinChatData/CgibinChatDataGetCorpAuthInfoResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinChatData/CgibinChatDataSetLogLevelRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinChatData/CgibinChatDataSetReceiveCallbackRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinChatData/CgibinChatDataUploadMediaResponse.json diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Service/ChatArchive/AdvancedApiExpiredEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Service/ChatArchive/AdvancedApiExpiredEvent.cs new file mode 100644 index 00000000..902a1e47 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Service/ChatArchive/AdvancedApiExpiredEvent.cs @@ -0,0 +1,35 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Events +{ + /// + /// 表示 INFO.advanced_api_expired 事件的数据。 + /// + /// REF:
+ /// + ///
+ ///
+ public class AdvancedApiExpiredEvent : AdvancedApiTrialExpiredEvent + { + public static class Types + { + public class ChatArchiveApi + { + /// + /// 获取或设置到期的账号版本。 + /// + [Newtonsoft.Json.JsonProperty("Edition")] + [System.Text.Json.Serialization.JsonPropertyName("Edition")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + [System.Xml.Serialization.XmlElement("Edition")] + public int Edition { get; set; } + } + } + + /// + /// 获取或设置会话内容数据接口相关信息。 + /// + [Newtonsoft.Json.JsonProperty("ChatArchiveApi")] + [System.Text.Json.Serialization.JsonPropertyName("ChatArchiveApi")] + [System.Xml.Serialization.XmlElement("ChatArchiveApi")] + public Types.ChatArchiveApi ChatArchiveApi { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Service/ChatArchive/AdvancedApiTrialExpiredEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Service/ChatArchive/AdvancedApiTrialExpiredEvent.cs new file mode 100644 index 00000000..c925caf7 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Events/Service/ChatArchive/AdvancedApiTrialExpiredEvent.cs @@ -0,0 +1,37 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Events +{ + /// + /// 表示 INFO.advanced_api_trial_expired 事件的数据。 + /// + /// REF:
+ /// + ///
+ ///
+ public class AdvancedApiTrialExpiredEvent : WechatWorkEvent + { + /// + /// 获取或设置服务商 CorpId。 + /// + [Newtonsoft.Json.JsonProperty("ServiceCorpId")] + [System.Text.Json.Serialization.JsonPropertyName("ServiceCorpId")] + [System.Xml.Serialization.XmlElement("ServiceCorpId")] + public string ServiceCorpId { get; set; } = default!; + + /// + /// 获取或设置授权方的 CorpId。 + /// + [Newtonsoft.Json.JsonProperty("AuthCorpId")] + [System.Text.Json.Serialization.JsonPropertyName("AuthCorpId")] + [System.Xml.Serialization.XmlElement("AuthCorpId")] + public string AuthorizerCorpId { get; set; } = default!; + + /// + /// 获取或设置高级接口类型。 + /// + [Newtonsoft.Json.JsonProperty("AdvanceApiType")] + [System.Text.Json.Serialization.JsonPropertyName("AdvanceApiType")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + [System.Xml.Serialization.XmlElement("AdvanceApiType")] + public int AdvanceApiType { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinChatDataExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinChatDataExtensions.cs index 06265958..e58c86d8 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinChatDataExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinChatDataExtensions.cs @@ -32,6 +32,29 @@ namespace SKIT.FlurlHttpClient.Wechat.Work return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); ; } + /// + /// 异步调用 [POST] /cgi-bin/chatdata/get_corp_auth_info 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteCgibinChatDataGetCorpAuthInfoAsync(this WechatWorkClient client, Models.CgibinChatDataGetCorpAuthInfoRequest 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 + .CreateFlurlRequest(request, HttpMethod.Post, "cgi-bin", "chatdata", "get_corp_auth_info") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); ; + } + /// /// 异步调用 [POST] /cgi-bin/chatdata/set_public_key 接口。 /// @@ -55,6 +78,83 @@ namespace SKIT.FlurlHttpClient.Wechat.Work return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); ; } + /// + /// 异步调用 [POST] /cgi-bin/chatdata/set_receive_callback 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteCgibinChatDataSetReceiveCallbackAsync(this WechatWorkClient client, Models.CgibinChatDataSetReceiveCallbackRequest 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 + .CreateFlurlRequest(request, HttpMethod.Post, "cgi-bin", "chatdata", "set_receive_callback") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); ; + } + + /// + /// 异步调用 [POST] /cgi-bin/chatdata/set_log_level 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteCgibinChatDataSetLogLevelAsync(this WechatWorkClient client, Models.CgibinChatDataSetLogLevelRequest 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 + .CreateFlurlRequest(request, HttpMethod.Post, "cgi-bin", "chatdata", "set_log_level") + .SetQueryParam("access_token", request.AccessToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); ; + } + + /// + /// 异步调用 [POST] /cgi-bin/chatdata/upload_media 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteCgibinChatDataUploadMediaAsync(this WechatWorkClient client, Models.CgibinChatDataUploadMediaRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (request.FileName is null) + request.FileName = Guid.NewGuid().ToString("N").ToLower(); + + if (request.FileContentType is null) + request.FileContentType = MimeTypes.GetMimeMapping(request.FileName!); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "cgi-bin", "chatdata", "upload") + .SetQueryParam("access_token", request.AccessToken) + .SetQueryParam("type", request.Type); + + using var httpContent = Utilities.HttpContentBuilder.BuildWithFile(fileName: request.FileName, fileBytes: request.FileBytes, fileContentType: request.FileContentType, formDataName: "media"); + return await client.SendFlurlRequestAsync(flurlReq, httpContent: httpContent, cancellationToken: cancellationToken).ConfigureAwait(false); + } + /// /// 异步调用 [POST] /cgi-bin/chatdata/sync_msg 接口。 /// diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataGetCorpAuthInfoRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataGetCorpAuthInfoRequest.cs new file mode 100644 index 00000000..1848e6db --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataGetCorpAuthInfoRequest.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/chatdata/get_corp_auth_info 接口的请求。 + /// + public class CgibinChatDataGetCorpAuthInfoRequest : WechatWorkRequest + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataGetCorpAuthInfoResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataGetCorpAuthInfoResponse.cs new file mode 100644 index 00000000..6794aa5d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataGetCorpAuthInfoResponse.cs @@ -0,0 +1,90 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/chatdata/get_corp_auth_info 接口的响应。 + /// + public class CgibinChatDataGetCorpAuthInfoResponse : WechatWorkResponse + { + public static class Types + { + public class AuthEdition + { + public static class Types + { + public class AuthScope + { + /// + /// 获取或设置企业授权存档的成员账号列表。 + /// + [Newtonsoft.Json.JsonProperty("userid_list")] + [System.Text.Json.Serialization.JsonPropertyName("userid_list")] + public string[]? UserIdList { get; set; } + + /// + /// 获取或设置企业授权存档的部门 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("department_id_list")] + [System.Text.Json.Serialization.JsonPropertyName("department_id_list")] + public long[]? DepartmentIdList { get; set; } + + /// + /// 获取或设置企业授权存档的标签 ID 列表。 + /// + [Newtonsoft.Json.JsonProperty("tag_id_list")] + [System.Text.Json.Serialization.JsonPropertyName("tag_id_list")] + public long[]? TagIdList { get; set; } + } + } + + /// + /// 获取或设置会话版本类型。 + /// + [Newtonsoft.Json.JsonProperty("edition")] + [System.Text.Json.Serialization.JsonPropertyName("edition")] + public int Edition { get; set; } + + /// + /// 获取或设置授权范围信息。 + /// + [Newtonsoft.Json.JsonProperty("auth_scope")] + [System.Text.Json.Serialization.JsonPropertyName("auth_scope")] + public Types.AuthScope AuthScope { get; set; } = default!; + + /// + /// 获取或设置状态。 + /// + [Newtonsoft.Json.JsonProperty("status")] + [System.Text.Json.Serialization.JsonPropertyName("status")] + public int Status { get; set; } + + /// + /// 获取或设置开始生效时间戳。 + /// + [Newtonsoft.Json.JsonProperty("begin_time")] + [System.Text.Json.Serialization.JsonPropertyName("begin_time")] + public long BeginTimestamp { get; set; } + + /// + /// 获取或设置结束生效时间戳。 + /// + [Newtonsoft.Json.JsonProperty("end_time")] + [System.Text.Json.Serialization.JsonPropertyName("end_time")] + public long EndTimestamp { get; set; } + + /// + /// 获取或设置会话授权的天数。 + /// + [Newtonsoft.Json.JsonProperty("msg_duration_days")] + [System.Text.Json.Serialization.JsonPropertyName("msg_duration_days")] + public int MessageDurationDays { get; set; } + } + } + + /// + /// 获取或设置企业授权的会话版本列表。 + /// + [Newtonsoft.Json.JsonProperty("auth_edition_list")] + [System.Text.Json.Serialization.JsonPropertyName("auth_edition_list")] + public Types.AuthEdition[] AuthEditionList { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataSetLogLevelRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataSetLogLevelRequest.cs new file mode 100644 index 00000000..5519a551 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataSetLogLevelRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/chatdata/set_log_level 接口的请求。 + /// + public class CgibinChatDataSetLogLevelRequest : WechatWorkRequest + { + /// + /// 获取或设置应用关联的程序 ID。 + /// + [Newtonsoft.Json.JsonProperty("program_id")] + [System.Text.Json.Serialization.JsonPropertyName("program_id")] + public string ProgramId { get; set; } = string.Empty; + + /// + /// 获取或设置日志级别。 + /// + [Newtonsoft.Json.JsonProperty("log_level")] + [System.Text.Json.Serialization.JsonPropertyName("log_level")] + public int LogLevel { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataSetLogLevelResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataSetLogLevelResponse.cs new file mode 100644 index 00000000..2a91490d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataSetLogLevelResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/chatdata/set_log_level 接口的响应。 + /// + public class CgibinChatDataSetLogLevelResponse : WechatWorkResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataSetReceiveCallbackRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataSetReceiveCallbackRequest.cs new file mode 100644 index 00000000..1ca8ae3f --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataSetReceiveCallbackRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/chatdata/set_receive_callback 接口的请求。 + /// + public class CgibinChatDataSetReceiveCallbackRequest : WechatWorkRequest + { + /// + /// 获取或设置应用关联的程序 ID。 + /// + [Newtonsoft.Json.JsonProperty("program_id")] + [System.Text.Json.Serialization.JsonPropertyName("program_id")] + public string ProgramId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataSetReceiveCallbackResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataSetReceiveCallbackResponse.cs new file mode 100644 index 00000000..3f596487 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataSetReceiveCallbackResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/chatdata/set_receive_callback 接口的响应。 + /// + public class CgibinChatDataSetReceiveCallbackResponse : WechatWorkResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataUploadMediaRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataUploadMediaRequest.cs new file mode 100644 index 00000000..783c8d35 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataUploadMediaRequest.cs @@ -0,0 +1,38 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/chatdata/upload_media 接口的请求。 + /// + public class CgibinChatDataUploadMediaRequest : WechatWorkRequest + { + /// + /// 获取或设置媒体文件类型。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string Type { get; set; } = string.Empty; + + /// + /// 获取或设置文件字节数组。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public byte[] FileBytes { get; set; } = Array.Empty(); + + /// + /// 获取或设置文件名。如果不指定将由系统自动生成。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? FileName { get; set; } + + /// + /// 获取或设置文件 Conent-Type。如果不指定将由系统自动生成。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? FileContentType { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataUploadMediaResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataUploadMediaResponse.cs new file mode 100644 index 00000000..071260c6 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinChatData/CgibinChatDataUploadMediaResponse.cs @@ -0,0 +1,30 @@ +namespace SKIT.FlurlHttpClient.Wechat.Work.Models +{ + /// + /// 表示 [POST] /cgi-bin/chatdata/upload_media 接口的响应。 + /// + public class CgibinChatDataUploadMediaResponse : WechatWorkResponse + { + /// + /// 获取或设置媒体文件类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public string Type { get; set; } = default!; + + /// + /// 获取或设置媒体文件标识。 + /// + [Newtonsoft.Json.JsonProperty("media_id")] + [System.Text.Json.Serialization.JsonPropertyName("media_id")] + public string MediaId { get; set; } = default!; + + /// + /// 获取或设置媒体文件上传时间戳。 + /// + [Newtonsoft.Json.JsonProperty("created_at")] + [System.Text.Json.Serialization.JsonPropertyName("created_at")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public long CreateTimestamp { get; set; } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Service/ChatArchive/AdvancedApiExpiredEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Service/ChatArchive/AdvancedApiExpiredEvent.xml new file mode 100644 index 00000000..c9276052 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Service/ChatArchive/AdvancedApiExpiredEvent.xml @@ -0,0 +1,10 @@ + + + + + + + + + 1403610513 + diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Service/ChatArchive/AdvancedApiTrialExpiredEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Service/ChatArchive/AdvancedApiTrialExpiredEvent.xml new file mode 100644 index 00000000..8d8b4a9d --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/EventSamples/Service/ChatArchive/AdvancedApiTrialExpiredEvent.xml @@ -0,0 +1,7 @@ + + + + + + 1403610513 + diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinChatData/CgibinChatDataGetCorpAuthInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinChatData/CgibinChatDataGetCorpAuthInfoResponse.json new file mode 100644 index 00000000..a1e78727 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinChatData/CgibinChatDataGetCorpAuthInfoResponse.json @@ -0,0 +1,30 @@ +{ + "errcode": 0, + "errmsg": "ok", + "auth_edition_list": [ + { + "edition": 1, + "auth_scope": { + "userid_list": [ "xxxx" ], + "department_id_list": [ 1, 2, 3 ], + "tag_id_list": [ 10, 11 ] + }, + "status": 1, + "begin_time": 1726588800, + "end_time": 1729180799, + "msg_duration_days": 90 + }, + { + "edition": 2, + "auth_scope": { + "userid_list": [ "xxxx" ], + "department_id_list": [ 1, 2 ], + "tag_id_list": [ 10 ] + }, + "status": 1, + "begin_time": 1726588800, + "end_time": 1729180799, + "msg_duration_days": 90 + } + ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinChatData/CgibinChatDataSetLogLevelRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinChatData/CgibinChatDataSetLogLevelRequest.json new file mode 100644 index 00000000..2c40c794 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinChatData/CgibinChatDataSetLogLevelRequest.json @@ -0,0 +1,4 @@ +{ + "program_id": "xxxx", + "log_level": 2 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinChatData/CgibinChatDataSetReceiveCallbackRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinChatData/CgibinChatDataSetReceiveCallbackRequest.json new file mode 100644 index 00000000..11b4ea73 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinChatData/CgibinChatDataSetReceiveCallbackRequest.json @@ -0,0 +1,3 @@ +{ + "program_id": "xxx" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinChatData/CgibinChatDataUploadMediaResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinChatData/CgibinChatDataUploadMediaResponse.json new file mode 100644 index 00000000..206aa954 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinChatData/CgibinChatDataUploadMediaResponse.json @@ -0,0 +1,7 @@ +{ + "errcode": 0, + "errmsg": "", + "type": "file", + "media_id": "1G6nrLmr5EC3MMb_-zK1dDdzmd0p7cNliYu9V5w7o8K0", + "created_at": "1380000000" +}