Something went wrong. Try again.
Learn how to use Rust to build ATProto powered applications
Something went wrong. Try again.
886 B · 32 lines
Rust
at main
123456789101112131415161718192021222324252627282930313233use atrium_identity::handle::DnsTxtResolver;use hickory_resolver::TokioAsyncResolver;
/// Setup for dns resolver for the handle resolverpub struct HickoryDnsTxtResolver { resolver: hickory_resolver::TokioAsyncResolver,}
impl Default for HickoryDnsTxtResolver { fn default() -> Self { Self { resolver: TokioAsyncResolver::tokio_from_system_conf() .expect("failed to create resolver"), } }}
impl DnsTxtResolver for HickoryDnsTxtResolver { async fn resolve( &self, query: &str, ) -> core::result::Result<Vec<String>, Box<dyn std::error::Error + Send + Sync + 'static>> { println!("Resolving TXT for: {}", query); Ok(self .resolver .txt_lookup(query) .await? .iter() .map(|txt| txt.to_string()) .collect()) }}