use idoh::Answer;
use ver_from_txt::{VerUrlLi, ver_from_txt};
use crate::Result;
fn extract(project: &str, pre_ver: &[u64; 3], li: &[Answer]) -> idoh::Result<Option<VerUrlLi>> {
for i in li {
if i.r#type == idoh::record_type::TXT {
return ver_from_txt(project, pre_ver, &i.data)
.map_err(|e| idoh::Error::InvalidData(format!("{e}")));
}
}
Ok(None)
}
pub async fn dns_check(
project: &str,
pre_ver: &[u64; 3],
txt_host_li: &[String],
) -> Result<Option<VerUrlLi>> {
for host in riter::iter(txt_host_li) {
let pre_ver = *pre_ver;
let project = project.to_owned();
if let Ok(Some(r)) = xerr::ok!(idoh::resolve(host, "TXT", move |li| extract(
&project, &pre_ver, li
))
.await
.map_err(Box::new))
{
return Ok(Some(r));
}
}
Ok(None)
}