Moved the real handling of the request to the site info struct
This commit is contained in:
parent
b157e2c962
commit
fdfeae97b2
47
src/main.rs
47
src/main.rs
@ -202,10 +202,35 @@ impl Context {
|
|||||||
),
|
),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
info.handle_connection(
|
||||||
|
stream,
|
||||||
|
&request.body,
|
||||||
|
&relative_path,
|
||||||
|
&path,
|
||||||
|
&pk_path,
|
||||||
|
pki_path.as_ref().map(|path| path.as_ref()),
|
||||||
|
&data_path,
|
||||||
|
start_level,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl SiteInfo {
|
||||||
|
fn handle_connection(
|
||||||
|
&mut self,
|
||||||
|
mut stream: TcpStream,
|
||||||
|
body: &str,
|
||||||
|
relative_path: &str,
|
||||||
|
path: &Path,
|
||||||
|
pk_path: &Path,
|
||||||
|
pki_path: Option<&Path>,
|
||||||
|
data_path: &Path,
|
||||||
|
start_level: usize,
|
||||||
|
) {
|
||||||
let mut name = None;
|
let mut name = None;
|
||||||
let mut text = None;
|
let mut text = None;
|
||||||
|
|
||||||
for entry in request.body.split('&') {
|
for entry in body.split('&') {
|
||||||
let Some((key, input)) = entry.split_once('=') else {
|
let Some((key, input)) = entry.split_once('=') else {
|
||||||
continue;
|
continue;
|
||||||
};
|
};
|
||||||
@ -238,20 +263,20 @@ impl Context {
|
|||||||
.into(),
|
.into(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
"up" => info.up += 1,
|
"up" => self.up += 1,
|
||||||
"down" => info.down += 1,
|
"down" => self.down += 1,
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if let (Some(name), Some(text)) = (name, text) {
|
if let (Some(name), Some(text)) = (name, text) {
|
||||||
info.comments.push(Comment { name, text });
|
self.comments.push(Comment { name, text });
|
||||||
}
|
}
|
||||||
|
|
||||||
info.visits += 1;
|
self.visits += 1;
|
||||||
|
|
||||||
if let Ok(mut file) = File::create(data_path) {
|
if let Ok(mut file) = File::create(data_path) {
|
||||||
if to_stream::<PortableSettings, _, _>(info, &mut file).is_err() {
|
if to_stream::<PortableSettings, _, _>(self, &mut file).is_err() {
|
||||||
eprintln!("Error saving data!");
|
eprintln!("Error saving data!");
|
||||||
eprintln!();
|
eprintln!();
|
||||||
}
|
}
|
||||||
@ -264,22 +289,20 @@ impl Context {
|
|||||||
let _ = writeln!(
|
let _ = writeln!(
|
||||||
stream,
|
stream,
|
||||||
"<p>👁️{} 💖️{} 💔️{}</p>",
|
"<p>👁️{} 💖️{} 💔️{}</p>",
|
||||||
info.visits, info.up, info.down
|
self.visits, self.up, self.down
|
||||||
);
|
);
|
||||||
|
|
||||||
let title = relative_path
|
let title = relative_path
|
||||||
.rsplit_once('/')
|
.rsplit_once('/')
|
||||||
.map(|(_, title)| title)
|
.map(|(_, title)| title)
|
||||||
.unwrap_or(&relative_path);
|
.unwrap_or(relative_path);
|
||||||
if !title.is_empty() {
|
if !title.is_empty() {
|
||||||
let _ = writeln!(stream, "<h1>{title}</h1>");
|
let _ = writeln!(stream, "<h1>{title}</h1>");
|
||||||
}
|
}
|
||||||
|
|
||||||
let path_ref = &path;
|
|
||||||
|
|
||||||
let handle_entry = |mut entry: &str, output: &mut TcpStream, level: usize| {
|
let handle_entry = |mut entry: &str, output: &mut TcpStream, level: usize| {
|
||||||
let level = level + 1;
|
let level = level + 1;
|
||||||
let mut path = path_ref.clone();
|
let mut path = path.to_path_buf();
|
||||||
if let Some((real_entry, _)) = entry.split_once(':') {
|
if let Some((real_entry, _)) = entry.split_once(':') {
|
||||||
entry = real_entry
|
entry = real_entry
|
||||||
}
|
}
|
||||||
@ -363,7 +386,7 @@ impl Context {
|
|||||||
};
|
};
|
||||||
let _ = stream.write_all(html.into_string().as_bytes());
|
let _ = stream.write_all(html.into_string().as_bytes());
|
||||||
|
|
||||||
for Comment { name, text } in &info.comments {
|
for Comment { name, text } in &self.comments {
|
||||||
let _ = writeln!(stream, "<fieldset><legend>{name}</legend>{text}</fieldset>");
|
let _ = writeln!(stream, "<fieldset><legend>{name}</legend>{text}</fieldset>");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user