1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
use std::io::prelude::*;
use std::net::{TcpStream, ToSocketAddrs};
use std::str;
use std::io::{Error, ErrorKind};

pub fn get(host: &str) -> std::io::Result<String> {
    let mut host_addr = host.to_socket_addrs()?;
    let mut stream = TcpStream::connect(host_addr.next().unwrap())?;
    let request = format!(
        "GET / HTTP/1.1\nHost: {}\nUser-Agent: casablanca/0.0.1\n\n",
        host
    );
    stream.write(&request.as_bytes())?;
    let mut buffer = vec![0u8; 1024];
    stream.read(&mut buffer)?;

    let decode =  match str::from_utf8(&buffer) {
        Ok(s) => s,
        Err(_) => return Err(Error::new(ErrorKind::Other, "error happened in from_utf8 function")),
    };
    Ok(decode.to_string())
}