comtrya_lib/contexts/variable_include/
dns.rs

1use std::collections::HashMap;
2
3use anyhow::Result;
4use reqwest::Url;
5use trust_dns_resolver::config::ResolverConfig;
6use trust_dns_resolver::config::ResolverOpts;
7use trust_dns_resolver::Resolver;
8
9pub fn txt_record_values(url: &Url, contexts: &mut HashMap<String, String>) -> Result<()> {
10    let resolver = Resolver::new(ResolverConfig::default(), ResolverOpts::default())?;
11
12    let host = url
13        .host_str()
14        .ok_or_else(|| anyhow::anyhow!("Failed to parse host"))?;
15
16    let records = resolver.txt_lookup(host)?;
17
18    for record in records {
19        if let Some((key, value)) = record.to_string().split_once('=') {
20            contexts.insert(key.to_string(), value.to_string());
21        }
22    }
23
24    Ok(())
25}