openlark_workflow/v2/attachment/
mod.rs1pub mod delete;
3pub mod get;
5pub mod list;
7pub mod models;
9pub mod upload;
11
12use openlark_core::config::Config;
13use std::sync::Arc;
14
15#[derive(Clone)]
17pub struct Attachment {
18 config: Arc<Config>,
19 task_guid: String,
20}
21
22impl Attachment {
23 pub fn new(config: Arc<Config>) -> Self {
25 Self {
26 config,
27 task_guid: String::new(),
28 }
29 }
30
31 pub fn with_task(mut self, task_guid: impl Into<String>) -> Self {
33 self.task_guid = task_guid.into();
34 self
35 }
36
37 pub fn upload(&self, file_path: String) -> upload::UploadAttachmentRequest {
39 upload::UploadAttachmentRequest::new(self.config.clone(), self.task_guid.clone(), file_path)
40 }
41
42 pub fn delete(&self, attachment_guid: impl Into<String>) -> delete::DeleteAttachmentRequest {
44 delete::DeleteAttachmentRequest::new(
45 self.config.clone(),
46 self.task_guid.clone(),
47 attachment_guid.into(),
48 )
49 }
50
51 pub fn get(&self, attachment_guid: impl Into<String>) -> get::GetAttachmentRequest {
53 get::GetAttachmentRequest::new(self.config.clone(), attachment_guid.into())
54 }
55
56 pub fn list(&self) -> list::ListAttachmentsRequest {
58 list::ListAttachmentsRequest::new(self.config.clone())
59 }
60}
61
62pub use delete::DeleteAttachmentRequest;
64pub use get::GetAttachmentRequest;
65pub use list::ListAttachmentsRequest;
66pub use upload::UploadAttachmentRequest;
67
68pub use get::{AttachmentInfo, GetAttachmentResponse};
70pub use list::{AttachmentListItem, ListAttachmentsResponse};
71pub use models::{DeleteAttachmentResponse, UploadAttachmentResponse};
72
73#[cfg(test)]
74#[allow(unused_imports)]
75mod tests {
76 use super::*;
77 use std::sync::Arc;
78
79 fn create_test_config() -> Arc<Config> {
80 Arc::new(
81 Config::builder()
82 .app_id("test_app")
83 .app_secret("test_secret")
84 .build(),
85 )
86 }
87
88 #[test]
89 fn test_attachment_new() {
90 let config = create_test_config();
91 let attachment = Attachment::new(config);
92 assert!(attachment.task_guid.is_empty());
93 }
94
95 #[test]
96 fn test_attachment_with_task() {
97 let config = create_test_config();
98 let attachment = Attachment::new(config).with_task("task_123");
99 assert_eq!(attachment.task_guid, "task_123");
100 }
101
102 #[test]
103 fn test_attachment_upload() {
104 let config = create_test_config();
105 let attachment = Attachment::new(config).with_task("task_123");
106 let _request = attachment.upload("/path/to/file.txt".to_string());
107 }
108
109 #[test]
110 fn test_attachment_delete() {
111 let config = create_test_config();
112 let attachment = Attachment::new(config).with_task("task_123");
113 let _request = attachment.delete("attachment_456");
114 }
115
116 #[test]
117 fn test_attachment_get() {
118 let config = create_test_config();
119 let attachment = Attachment::new(config);
120 let _request = attachment.get("attachment_456");
121 }
122
123 #[test]
124 fn test_attachment_list() {
125 let config = create_test_config();
126 let attachment = Attachment::new(config);
127 let _request = attachment.list();
128 }
129}