Skip to main content

openlark_application/
service.rs

1use openlark_core::config::Config;
2use std::sync::Arc;
3
4/// ApplicationService:应用管理服务的统一入口
5///
6/// 提供对应用 API v1/v5/v6/v7 与工作台(workplace)的访问能力,各版本经独立 feature 门控。
7#[derive(Clone)]
8pub struct ApplicationService {
9    // reserved:所有版本 feature 关闭时无读取者(--no-default-features);_config 前缀兜底 dead_code
10    _config: Arc<Config>,
11}
12
13impl ApplicationService {
14    /// 创建新的应用管理服务实例。
15    pub fn new(config: Config) -> Self {
16        Self {
17            _config: Arc::new(config),
18        }
19    }
20
21    /// 访问 v1 版本应用 API。
22    #[cfg(feature = "v1")]
23    pub fn v1(&self) -> crate::application::application::v1::ApplicationV1 {
24        crate::application::application::v1::ApplicationV1::new(self._config.clone())
25    }
26
27    /// 访问 v5 版本应用 API。
28    #[cfg(feature = "v5")]
29    pub fn v5(&self) -> crate::application::application::v5::ApplicationV5 {
30        crate::application::application::v5::ApplicationV5::new(self._config.clone())
31    }
32
33    /// 访问 v6 版本应用 API。
34    #[cfg(feature = "v6")]
35    pub fn v6(&self) -> crate::application::application::v6::ApplicationV6 {
36        crate::application::application::v6::ApplicationV6::new(self._config.clone())
37    }
38
39    /// 访问 v7 版本应用 API。
40    #[cfg(feature = "v7")]
41    pub fn v7(&self) -> crate::application::application::v7::ApplicationV7 {
42        crate::application::application::v7::ApplicationV7::new(self._config.clone())
43    }
44
45    /// 访问工作台(workplace)API(仅 v1,直接返回 WorkplaceV1,不引入单版本中间层)。
46    #[cfg(feature = "workplace")]
47    pub fn workplace(&self) -> crate::workplace::workplace::v1::WorkplaceV1 {
48        crate::workplace::workplace::v1::WorkplaceV1::new(self._config.clone())
49    }
50}