diff --git a/examples/ipv6.rs b/examples/ipv6.rs new file mode 100644 index 0000000..309d860 --- /dev/null +++ b/examples/ipv6.rs @@ -0,0 +1,40 @@ +use std::io; +use std::net::{SocketAddr, ToSocketAddrs}; +use ureq::Resolver; +pub struct Ipv6Resolver; + +impl Resolver for Ipv6Resolver { + fn resolve(&self, netloc: &str) -> io::Result> { + ToSocketAddrs::to_socket_addrs(netloc).map(|iter| { + let vec = iter + // only keep ipv6 addresses + .filter(|s| s.is_ipv6()) + .collect::>(); + + if vec.is_empty() { + println!( + "Failed to find any ipv6 addresses. This probably means \ + the DNS server didn't return any." + ); + } + + vec + }) + } +} + +pub fn main() { + let agent = ureq::builder().resolver(Ipv6Resolver).build(); + + let result = agent.get("https://www.google.com/").call(); + + match result { + Err(err) => { + println!("{:?}", err); + std::process::exit(1); + } + Ok(response) => { + assert_eq!(response.status(), 200); + } + } +}