64 lines
1.7 KiB
Rust
64 lines
1.7 KiB
Rust
#[cfg(test)]
|
|
mod tests;
|
|
|
|
use super::super::ControllerType;
|
|
|
|
#[derive(Debug, PartialEq)]
|
|
pub enum AccessControllerType {
|
|
Help,
|
|
|
|
GetUsers,
|
|
SetUsers(Option<Vec<String>>),
|
|
|
|
GetRoomLocalAgentManagers,
|
|
SetRoomLocalAgentManagers(Option<Vec<String>>),
|
|
}
|
|
|
|
pub fn determine_controller(text: &str) -> ControllerType {
|
|
if text.starts_with("users") {
|
|
return ControllerType::Access(AccessControllerType::GetUsers);
|
|
}
|
|
|
|
if let Some(patterns_string) = text.strip_prefix("set-users") {
|
|
let patterns_string = patterns_string.trim().to_owned();
|
|
|
|
let patterns_option = if patterns_string.is_empty() {
|
|
None
|
|
} else {
|
|
let patterns_vector = patterns_string
|
|
.split(" ")
|
|
.map(|s| s.to_string())
|
|
.collect::<Vec<String>>();
|
|
|
|
Some(patterns_vector)
|
|
};
|
|
|
|
return ControllerType::Access(AccessControllerType::SetUsers(patterns_option));
|
|
}
|
|
|
|
if text.starts_with("room-local-agent-managers") {
|
|
return ControllerType::Access(AccessControllerType::GetRoomLocalAgentManagers);
|
|
}
|
|
|
|
if let Some(patterns_string) = text.strip_prefix("set-room-local-agent-managers") {
|
|
let patterns_string = patterns_string.trim().to_owned();
|
|
|
|
let patterns_option = if patterns_string.is_empty() {
|
|
None
|
|
} else {
|
|
let patterns_vector = patterns_string
|
|
.split(" ")
|
|
.map(|s| s.to_string())
|
|
.collect::<Vec<String>>();
|
|
|
|
Some(patterns_vector)
|
|
};
|
|
|
|
return ControllerType::Access(AccessControllerType::SetRoomLocalAgentManagers(
|
|
patterns_option,
|
|
));
|
|
}
|
|
|
|
ControllerType::Access(AccessControllerType::Help)
|
|
}
|