Provide ipv6 example
This commit is contained in:
40
examples/ipv6.rs
Normal file
40
examples/ipv6.rs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user