mirror of
https://github.com/YGGverse/agate.git
synced 2026-04-08 20:45:29 +00:00
Reduce number of writes in send_header
This commit is contained in:
parent
bf2e35537c
commit
fe62be214e
1 changed files with 14 additions and 14 deletions
28
src/main.rs
28
src/main.rs
|
|
@ -101,12 +101,12 @@ async fn handle_request(stream: TcpStream) -> Result {
|
||||||
let url = match parse_request(stream).await {
|
let url = match parse_request(stream).await {
|
||||||
Ok(url) => url,
|
Ok(url) => url,
|
||||||
Err((status, msg)) => {
|
Err((status, msg)) => {
|
||||||
send_header(stream, &status.to_string(), &[&msg]).await?;
|
send_header(stream, status, &[&msg]).await?;
|
||||||
Err(msg)?
|
Err(msg)?
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
if let Err(e) = send_response(url, stream).await {
|
if let Err(e) = send_response(url, stream).await {
|
||||||
send_header(stream, "51", &["Not found, sorry."]).await?;
|
send_header(stream, 51, &["Not found, sorry."]).await?;
|
||||||
Err(e)?
|
Err(e)?
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
@ -197,7 +197,7 @@ async fn send_response<W: Write + Unpin>(url: Url, stream: &mut W) -> Result {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// if client is not redirected, links may not work as expected without trailing slash
|
// if client is not redirected, links may not work as expected without trailing slash
|
||||||
return send_header(stream, "31", &[url.as_str(), "/"]).await;
|
return send_header(stream, 31, &[url.as_str(), "/"]).await;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -209,7 +209,7 @@ async fn send_response<W: Write + Unpin>(url: Url, stream: &mut W) -> Result {
|
||||||
send_text_gemini_header(stream).await?;
|
send_text_gemini_header(stream).await?;
|
||||||
} else {
|
} else {
|
||||||
let mime = mime_guess::from_path(&path).first_or_octet_stream();
|
let mime = mime_guess::from_path(&path).first_or_octet_stream();
|
||||||
send_header(stream, "20", &[mime.essence_str()]).await?;
|
send_header(stream, 20, &[mime.essence_str()]).await?;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send body.
|
// Send body.
|
||||||
|
|
@ -217,14 +217,14 @@ async fn send_response<W: Write + Unpin>(url: Url, stream: &mut W) -> Result {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn send_header<W: Write + Unpin>(stream: &mut W, status: &str, meta: &[&str]) -> Result {
|
async fn send_header<W: Write + Unpin>(stream: &mut W, status: u8, meta: &[&str]) -> Result {
|
||||||
log::info!("Responding with status {} and meta {:?}", status, meta);
|
use std::fmt::Write;
|
||||||
stream.write_all(status.as_bytes()).await?;
|
let mut response = String::with_capacity(64);
|
||||||
stream.write_all(b" ").await?;
|
write!(response, "{} ", status)?;
|
||||||
for m in meta {
|
response.extend(meta.iter().copied());
|
||||||
stream.write_all(m.as_bytes()).await?;
|
log::info!("Responding with status {:?}", response);
|
||||||
}
|
response.push_str("\r\n");
|
||||||
stream.write_all(b"\r\n").await?;
|
stream.write_all(response.as_bytes()).await?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -267,8 +267,8 @@ async fn list_directory<W: Write + Unpin>(stream: &mut W, path: &Path) -> Result
|
||||||
|
|
||||||
async fn send_text_gemini_header<W: Write + Unpin>(stream: &mut W) -> Result {
|
async fn send_text_gemini_header<W: Write + Unpin>(stream: &mut W) -> Result {
|
||||||
if let Some(lang) = ARGS.language.as_deref() {
|
if let Some(lang) = ARGS.language.as_deref() {
|
||||||
send_header(stream, "20", &["text/gemini;lang=", lang]).await
|
send_header(stream, 20, &["text/gemini;lang=", lang]).await
|
||||||
} else {
|
} else {
|
||||||
send_header(stream, "20", &["text/gemini"]).await
|
send_header(stream, 20, &["text/gemini"]).await
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue