comtrya_lib/contexts/variable_include/
dns.rs1use 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}