You apparently have to flush

This commit is contained in:
vanten-s 2023-11-21 18:23:17 +01:00
parent 6b39cbfd4f
commit fe514a3066
Signed by: vanten-s
GPG key ID: DE3060396884D3F2
2 changed files with 20 additions and 6 deletions

View file

@ -15,6 +15,15 @@ pub struct HTTPRequest {
pub body: Option<Vec<u8>>, pub body: Option<Vec<u8>>,
} }
#[derive(Clone, Debug)]
pub struct HTTPResponse {
pub version: String,
pub status_code: u16,
pub status: String,
pub headers: Vec<HTTPHeader>,
pub body: Option<Vec<u8>>,
}
#[derive(Clone, Copy, Debug)] #[derive(Clone, Copy, Debug)]
pub enum HTTPMethod { pub enum HTTPMethod {
Get, Get,
@ -54,7 +63,10 @@ impl Serialize for HTTPRequest {
result.append(&mut body) result.append(&mut body)
} }
let _ = dbg!(String::from_utf8(result.clone())); println!("{}", match String::from_utf8(result.clone()) {
Ok(v) => v,
Err(v) => format!("{}", v),
});
result result
} }
} }
@ -80,13 +92,15 @@ pub async fn get_website(
request: HTTPRequest, request: HTTPRequest,
tor_client: TorClient<tor_rtcompat::PreferredRuntime>, tor_client: TorClient<tor_rtcompat::PreferredRuntime>,
) -> Result<Vec<u8>> { ) -> Result<Vec<u8>> {
let mut client_stream = tor_client.connect((address, port)).await?; let mut stream = tor_client.connect((address, port)).await?;
client_stream.write_all(&request.serialize()).await?; stream.write_all(&request.serialize()).await?;
stream.flush().await?;
println!("Sent request for {} to {address}", request.location); println!("Sent request for {} to {address}", request.location);
let mut response_status: Vec<u8> = Vec::new(); let mut response_status: Vec<u8> = Vec::new();
loop { loop {
let response = client_stream.read_u8().await?; let response = stream.read_u8().await?;
response_status.push(dbg!(response)); response_status.push(dbg!(response));
if response == b'\n' { if response == b'\n' {
break; break;

View file

@ -15,12 +15,12 @@ async fn main() -> Result<()> {
version: "HTTP/1.1".to_string(), version: "HTTP/1.1".to_string(),
headers: vec![HTTPHeader { headers: vec![HTTPHeader {
key: "Host".to_string(), key: "Host".to_string(),
value: "example.com".to_string(), value: "vanten-s.com".to_string(),
}], }],
body: None, body: None,
}; };
dbg!(get_website("example.com", 80, test_request, tor_client).await?); dbg!(get_website("94.255.138.67", 80, test_request, tor_client).await?);
Ok(()) Ok(())
} }