openlark_security/security/acs/
mod.rs1use std::sync::Arc;
6
7#[derive(Debug)]
9pub struct AcsProject {
10 config: Arc<crate::models::SecurityConfig>,
11 v1: AcsV1Service,
12}
13
14impl AcsProject {
15 pub fn new(config: Arc<crate::models::SecurityConfig>) -> Self {
17 Self {
18 v1: AcsV1Service::new(config.clone()),
19 config,
20 }
21 }
22
23 pub fn v1(&self) -> &AcsV1Service {
25 &self.v1
26 }
27
28 pub fn config(&self) -> &crate::models::SecurityConfig {
30 &self.config
31 }
32}
33
34#[derive(Debug)]
36pub struct AcsV1Service {
37 #[allow(dead_code)]
38 config: Arc<crate::models::SecurityConfig>,
39 users: crate::security::acs::v1::users::UsersService,
40 user_faces: crate::security::acs::v1::user_faces::UserFacesService,
41 rule_external: crate::security::acs::v1::rule_external::RuleExternalService,
42 visitors: crate::security::acs::v1::visitors::VisitorsService,
43 devices: crate::security::acs::v1::devices::DevicesService,
44 access_records: crate::security::acs::v1::access_records::AccessRecordsService,
45}
46
47impl AcsV1Service {
48 pub fn new(config: Arc<crate::models::SecurityConfig>) -> Self {
50 Self {
51 users: crate::security::acs::v1::users::UsersService::new(config.clone()),
52 user_faces: crate::security::acs::v1::user_faces::UserFacesService::new(config.clone()),
53 rule_external: crate::security::acs::v1::rule_external::RuleExternalService::new(
54 config.clone(),
55 ),
56 visitors: crate::security::acs::v1::visitors::VisitorsService::new(config.clone()),
57 devices: crate::security::acs::v1::devices::DevicesService::new(config.clone()),
58 access_records: crate::security::acs::v1::access_records::AccessRecordsService::new(
59 config.clone(),
60 ),
61 config,
62 }
63 }
64
65 pub fn users(&self) -> &crate::security::acs::v1::users::UsersService {
67 &self.users
68 }
69
70 pub fn user_faces(&self) -> &crate::security::acs::v1::user_faces::UserFacesService {
72 &self.user_faces
73 }
74
75 pub fn rule_external(&self) -> &crate::security::acs::v1::rule_external::RuleExternalService {
77 &self.rule_external
78 }
79
80 pub fn visitors(&self) -> &crate::security::acs::v1::visitors::VisitorsService {
82 &self.visitors
83 }
84
85 pub fn devices(&self) -> &crate::security::acs::v1::devices::DevicesService {
87 &self.devices
88 }
89
90 pub fn access_records(
92 &self,
93 ) -> &crate::security::acs::v1::access_records::AccessRecordsService {
94 &self.access_records
95 }
96}
97
98pub mod v1;
100
101#[cfg(test)]
102mod tests {
103
104 use serde_json;
105
106 #[test]
107 fn test_serialization_roundtrip() {
108 let json = r#"{"test": "value"}"#;
110 assert!(serde_json::from_str::<serde_json::Value>(json).is_ok());
111 }
112
113 #[test]
114 fn test_deserialization_from_json() {
115 let json = r#"{"field": "data"}"#;
117 let value: serde_json::Value = serde_json::from_str(json).expect("JSON 反序列化失败");
118 assert_eq!(value["field"], "data");
119 }
120}