use http_req::{
request::RequestMessage,
response::Response,
stream::{self, Stream},
uri::Uri,
};
use std::{
convert::TryFrom,
io::{BufReader, Read, Write},
time::Duration,
};
fn main() {
let addr: Uri = Uri::try_from("https://www.rust-lang.org/learn").unwrap();
let raw_head;
let mut body = Vec::new();
let request_msg = RequestMessage::new(&addr)
.header("Connection", "Close")
.parse();
let mut stream = Stream::connect(&addr, Some(Duration::from_secs(60))).unwrap();
stream = Stream::try_to_https(stream, &addr, None).unwrap();
stream.write_all(&request_msg).unwrap();
let mut stream = BufReader::new(stream);
raw_head = stream::read_head(&mut stream);
stream.read_to_end(&mut body).unwrap();
let response = Response::from_head(&raw_head).unwrap();
println!("Status: {} {}", response.status_code(), response.reason());
println!("Headers: {}", response.headers());
}