use std::string::String;
use windows_registry::LOCAL_MACHINE;
use windows_result::HRESULT;
use crate::error::*;
pub fn get_search_list() -> Result<Vec<String>> {
match LOCAL_MACHINE
.get_string("SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\SearchList")
{
Ok(search_list) => Ok(search_list.split(',').map(|s| s.to_owned()).collect()),
Err(err) if err.code() == E_FILE_NOT_FOUND => Ok(vec![]),
Err(err) => Err(err.into()),
}
}
pub fn get_domain() -> Result<Option<String>> {
match LOCAL_MACHINE.get_string("SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Domain")
{
Ok(domain) => Ok((!domain.is_empty()).then_some(domain)),
Err(err) if err.code() == E_FILE_NOT_FOUND => Ok(None),
Err(err) => Err(err.into()),
}
}
pub fn is_round_robin_enabled() -> Result<bool> {
match LOCAL_MACHINE.get_u32("SYSTEM\\CurrentControlSet\\Services\\DNS\\Parameters\\RoundRobin")
{
Ok(value) => Ok(value != 0),
Err(err) if err.code() == E_FILE_NOT_FOUND => Ok(true), Err(err) => Err(err.into()),
}
}
const E_FILE_NOT_FOUND: HRESULT = HRESULT(0x80070002_u32 as i32);