proxie 0.1.1

Library for making requests through HTTP or SOCKS proxy
Documentation
use std::{
    net::{TcpStream},
    io::{BufRead, Write, BufReader},
};
use crate::{
    prelude::*,
    utils::*,
    target::ToTarget,
    proxy::HTTPProxy,
    sync::{SyncProxy, ProxyTcpStream},
};

impl SyncProxy for HTTPProxy {
    fn connect(&self, addr: impl ToTarget) -> Result<ProxyTcpStream> {
        let request = make_http_connect_request(&addr, &self)?;

        let mut stream = TcpStream::connect((&*self.server, self.port))?;
        stream.write_all(request.as_bytes())?;
        stream.flush()?;

        let mut reader = BufReader::new(&stream);
        let mut buffer = String::new();

        loop {
            reader.read_line(&mut buffer)?;

            if buffer.ends_with("\r\n\r\n") {
                break;
            }
        }

        parse_http_response(&buffer.as_bytes())?;

        Ok(ProxyTcpStream {
            stream,
        })
    }
}