Skip to main content

openlark_workflow/v2/tasklist/activity_subscription/
mod.rs

1//! 动态订阅模块
2
3pub mod create;
4pub mod delete;
5pub mod get;
6pub mod list;
7pub mod models;
8pub mod patch;
9
10use openlark_core::config::Config;
11use std::sync::Arc;
12
13/// ActivitySubscription:动态订阅资源
14#[derive(Clone)]
15pub struct ActivitySubscriptionResource {
16    config: Arc<Config>,
17    tasklist_guid: String,
18}
19
20impl ActivitySubscriptionResource {
21    pub fn new(config: Arc<Config>, tasklist_guid: impl Into<String>) -> Self {
22        Self {
23            config,
24            tasklist_guid: tasklist_guid.into(),
25        }
26    }
27
28    /// 创建动态订阅
29    pub fn create(&self) -> create::CreateActivitySubscriptionRequest {
30        create::CreateActivitySubscriptionRequest::new(
31            self.config.clone(),
32            self.tasklist_guid.clone(),
33        )
34    }
35
36    /// 获取动态订阅
37    pub fn get(&self, subscription_guid: impl Into<String>) -> get::GetActivitySubscriptionRequest {
38        get::GetActivitySubscriptionRequest::new(
39            self.config.clone(),
40            self.tasklist_guid.clone(),
41            subscription_guid.into(),
42        )
43    }
44
45    /// 更新动态订阅
46    pub fn patch(
47        &self,
48        subscription_guid: impl Into<String>,
49    ) -> patch::UpdateActivitySubscriptionRequest {
50        patch::UpdateActivitySubscriptionRequest::new(
51            self.config.clone(),
52            self.tasklist_guid.clone(),
53            subscription_guid.into(),
54        )
55    }
56
57    /// 删除动态订阅
58    pub fn delete(
59        &self,
60        subscription_guid: impl Into<String>,
61    ) -> delete::DeleteActivitySubscriptionRequest {
62        delete::DeleteActivitySubscriptionRequest::new(
63            self.config.clone(),
64            self.tasklist_guid.clone(),
65            subscription_guid.into(),
66        )
67    }
68
69    /// 列取动态订阅
70    pub fn list(&self) -> list::ListActivitySubscriptionsRequest {
71        list::ListActivitySubscriptionsRequest::new(self.config.clone(), self.tasklist_guid.clone())
72    }
73}
74
75// 重新导出请求类型
76pub use create::CreateActivitySubscriptionRequest;
77pub use delete::DeleteActivitySubscriptionRequest;
78pub use get::GetActivitySubscriptionRequest;
79pub use list::ListActivitySubscriptionsRequest;
80pub use patch::UpdateActivitySubscriptionRequest;
81
82// 重新导出响应类型
83pub use models::{
84    ActivitySubscription, ActivitySubscriptionTargetType, ActivitySubscriptionType,
85    CreateActivitySubscriptionBody, CreateActivitySubscriptionResponse,
86    DeleteActivitySubscriptionResponse, GetActivitySubscriptionResponse,
87    ListActivitySubscriptionsResponse, UpdateActivitySubscriptionBody,
88    UpdateActivitySubscriptionResponse,
89};
90
91#[cfg(test)]
92#[allow(unused_imports)]
93mod tests {
94    use super::*;
95    use std::sync::Arc;
96
97    fn create_test_config() -> Arc<Config> {
98        Arc::new(
99            Config::builder()
100                .app_id("test_app")
101                .app_secret("test_secret")
102                .build(),
103        )
104    }
105
106    #[test]
107    fn test_activity_subscription_resource_new() {
108        let config = create_test_config();
109        let resource = ActivitySubscriptionResource::new(config, "tasklist_123");
110        assert_eq!(resource.tasklist_guid, "tasklist_123");
111    }
112
113    #[test]
114    fn test_activity_subscription_create() {
115        let config = create_test_config();
116        let resource = ActivitySubscriptionResource::new(config, "tasklist_123");
117        let _request = resource.create();
118    }
119
120    #[test]
121    fn test_activity_subscription_get() {
122        let config = create_test_config();
123        let resource = ActivitySubscriptionResource::new(config, "tasklist_123");
124        let _request = resource.get("subscription_456");
125    }
126
127    #[test]
128    fn test_activity_subscription_patch() {
129        let config = create_test_config();
130        let resource = ActivitySubscriptionResource::new(config, "tasklist_123");
131        let _request = resource.patch("subscription_456");
132    }
133
134    #[test]
135    fn test_activity_subscription_delete() {
136        let config = create_test_config();
137        let resource = ActivitySubscriptionResource::new(config, "tasklist_123");
138        let _request = resource.delete("subscription_456");
139    }
140
141    #[test]
142    fn test_activity_subscription_list() {
143        let config = create_test_config();
144        let resource = ActivitySubscriptionResource::new(config, "tasklist_123");
145        let _request = resource.list();
146    }
147}