diff options
Diffstat (limited to 'vendor/hyper-util/examples/client.rs')
| -rw-r--r-- | vendor/hyper-util/examples/client.rs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/vendor/hyper-util/examples/client.rs b/vendor/hyper-util/examples/client.rs new file mode 100644 index 00000000..04defac0 --- /dev/null +++ b/vendor/hyper-util/examples/client.rs @@ -0,0 +1,37 @@ +use std::env; + +use http_body_util::Empty; +use hyper::Request; +use hyper_util::client::legacy::{connect::HttpConnector, Client}; + +#[tokio::main(flavor = "current_thread")] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let url = match env::args().nth(1) { + Some(url) => url, + None => { + eprintln!("Usage: client <url>"); + return Ok(()); + } + }; + + // HTTPS requires picking a TLS implementation, so give a better + // warning if the user tries to request an 'https' URL. + let url = url.parse::<hyper::Uri>()?; + if url.scheme_str() != Some("http") { + eprintln!("This example only works with 'http' URLs."); + return Ok(()); + } + + let client = Client::builder(hyper_util::rt::TokioExecutor::new()).build(HttpConnector::new()); + + let req = Request::builder() + .uri(url) + .body(Empty::<bytes::Bytes>::new())?; + + let resp = client.request(req).await?; + + eprintln!("{:?} {:?}", resp.version(), resp.status()); + eprintln!("{:#?}", resp.headers()); + + Ok(()) +} |
