Provide ipv6 example

This commit is contained in:
Martin Algesten
2021-02-27 12:06:40 +01:00
parent ec69c4282c
commit a66abdd285

40
examples/ipv6.rs Normal file
View File

@@ -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<Vec<SocketAddr>> {
ToSocketAddrs::to_socket_addrs(netloc).map(|iter| {
let vec = iter
// only keep ipv6 addresses
.filter(|s| s.is_ipv6())
.collect::<Vec<SocketAddr>>();
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);
}
}
}