Skip to main content

openlark_workflow/v2/tasklist/activity_subscription/
mod.rs

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