pub mod delete;
pub mod get;
pub mod list;
pub mod models;
pub mod upload;
use openlark_core::config::Config;
use std::sync::Arc;
#[derive(Clone)]
pub struct Attachment {
config: Arc<Config>,
task_guid: String,
}
impl Attachment {
pub fn new(config: Arc<Config>) -> Self {
Self {
config,
task_guid: String::new(),
}
}
pub fn with_task(mut self, task_guid: impl Into<String>) -> Self {
self.task_guid = task_guid.into();
self
}
pub fn upload(&self, file_path: String) -> upload::UploadAttachmentRequest {
upload::UploadAttachmentRequest::new(self.config.clone(), self.task_guid.clone(), file_path)
}
pub fn delete(&self, attachment_guid: impl Into<String>) -> delete::DeleteAttachmentRequest {
delete::DeleteAttachmentRequest::new(
self.config.clone(),
self.task_guid.clone(),
attachment_guid.into(),
)
}
pub fn get(&self, attachment_guid: impl Into<String>) -> get::GetAttachmentRequest {
get::GetAttachmentRequest::new(self.config.clone(), attachment_guid.into())
}
pub fn list(&self) -> list::ListAttachmentsRequest {
list::ListAttachmentsRequest::new(self.config.clone())
}
}
pub use delete::DeleteAttachmentRequest;
pub use get::GetAttachmentRequest;
pub use list::ListAttachmentsRequest;
pub use upload::UploadAttachmentRequest;
pub use get::{AttachmentInfo, GetAttachmentResponse};
pub use list::{AttachmentListItem, ListAttachmentsResponse};
pub use models::{DeleteAttachmentResponse, UploadAttachmentResponse};
#[cfg(test)]
#[allow(unused_imports)]
mod tests {
use super::*;
use std::sync::Arc;
fn create_test_config() -> Arc<Config> {
Arc::new(
Config::builder()
.app_id("test_app")
.app_secret("test_secret")
.build(),
)
}
#[test]
fn test_attachment_new() {
let config = create_test_config();
let attachment = Attachment::new(config);
assert!(attachment.task_guid.is_empty());
}
#[test]
fn test_attachment_with_task() {
let config = create_test_config();
let attachment = Attachment::new(config).with_task("task_123");
assert_eq!(attachment.task_guid, "task_123");
}
#[test]
fn test_attachment_upload() {
let config = create_test_config();
let attachment = Attachment::new(config).with_task("task_123");
let _request = attachment.upload("/path/to/file.txt".to_string());
}
#[test]
fn test_attachment_delete() {
let config = create_test_config();
let attachment = Attachment::new(config).with_task("task_123");
let _request = attachment.delete("attachment_456");
}
#[test]
fn test_attachment_get() {
let config = create_test_config();
let attachment = Attachment::new(config);
let _request = attachment.get("attachment_456");
}
#[test]
fn test_attachment_list() {
let config = create_test_config();
let attachment = Attachment::new(config);
let _request = attachment.list();
}
}