use crate::Result;
use super::SecurityDescriptor;
use super::backends;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum PermissionTarget {
FilePath(String),
RegistryPath(String),
}
impl PermissionTarget {
pub fn file(path: impl Into<String>) -> Self {
PermissionTarget::FilePath(path.into())
}
pub fn registry(path: impl Into<String>) -> Self {
PermissionTarget::RegistryPath(path.into())
}
pub fn read_descriptor(&self) -> Result<SecurityDescriptor> {
match self {
PermissionTarget::FilePath(path) => backends::file::read_descriptor(path),
PermissionTarget::RegistryPath(path) => backends::registry::read_descriptor(path),
}
}
pub fn write_descriptor(&self, descriptor: &SecurityDescriptor) -> Result<()> {
match self {
PermissionTarget::FilePath(path) => backends::file::write_descriptor(path, descriptor),
PermissionTarget::RegistryPath(path) => {
backends::registry::write_descriptor(path, descriptor)
}
}
}
}