use std::sync::Arc;
#[derive(Debug)]
pub struct AcsProject {
config: Arc<crate::models::SecurityConfig>,
v1: AcsV1Service,
}
impl AcsProject {
pub fn new(config: Arc<crate::models::SecurityConfig>) -> Self {
Self {
v1: AcsV1Service::new(config.clone()),
config,
}
}
pub fn v1(&self) -> &AcsV1Service {
&self.v1
}
pub fn config(&self) -> &crate::models::SecurityConfig {
&self.config
}
}
#[derive(Debug)]
pub struct AcsV1Service {
#[allow(dead_code)]
config: Arc<crate::models::SecurityConfig>,
users: crate::security::acs::v1::users::UsersService,
user_faces: crate::security::acs::v1::user_faces::UserFacesService,
rule_external: crate::security::acs::v1::rule_external::RuleExternalService,
visitors: crate::security::acs::v1::visitors::VisitorsService,
devices: crate::security::acs::v1::devices::DevicesService,
access_records: crate::security::acs::v1::access_records::AccessRecordsService,
}
impl AcsV1Service {
pub fn new(config: Arc<crate::models::SecurityConfig>) -> Self {
Self {
users: crate::security::acs::v1::users::UsersService::new(config.clone()),
user_faces: crate::security::acs::v1::user_faces::UserFacesService::new(config.clone()),
rule_external: crate::security::acs::v1::rule_external::RuleExternalService::new(
config.clone(),
),
visitors: crate::security::acs::v1::visitors::VisitorsService::new(config.clone()),
devices: crate::security::acs::v1::devices::DevicesService::new(config.clone()),
access_records: crate::security::acs::v1::access_records::AccessRecordsService::new(
config.clone(),
),
config,
}
}
pub fn users(&self) -> &crate::security::acs::v1::users::UsersService {
&self.users
}
pub fn user_faces(&self) -> &crate::security::acs::v1::user_faces::UserFacesService {
&self.user_faces
}
pub fn rule_external(&self) -> &crate::security::acs::v1::rule_external::RuleExternalService {
&self.rule_external
}
pub fn visitors(&self) -> &crate::security::acs::v1::visitors::VisitorsService {
&self.visitors
}
pub fn devices(&self) -> &crate::security::acs::v1::devices::DevicesService {
&self.devices
}
pub fn access_records(
&self,
) -> &crate::security::acs::v1::access_records::AccessRecordsService {
&self.access_records
}
}
pub mod v1;
#[cfg(test)]
mod tests {
use serde_json;
#[test]
fn test_serialization_roundtrip() {
let json = r#"{"test": "value"}"#;
assert!(serde_json::from_str::<serde_json::Value>(json).is_ok());
}
#[test]
fn test_deserialization_from_json() {
let json = r#"{"field": "data"}"#;
let value: serde_json::Value = serde_json::from_str(json).expect("JSON 反序列化失败");
assert_eq!(value["field"], "data");
}
}