Ok(response)
}
+const HTML_HEADER: &str = "
+<html>
+ <head>
+ <title>Vote!</title>
+ <style>
+ input { transform: scale(1.5); }
+ </style>
+ </head>
+ <body>
+ <table>";
+const HTML_FOOTER: &str = "
+ </table>
+ </body>
+</html>";
+
fn prompt_for_vote(dir: PathBuf, request: cgi::Request) -> Result<cgi::Response, cgi::Response> {
let voter = get_voter(&request);
let cfile = std::fs::File::open(dir.join("candidates"))
.map_err(|_| cgi::text_response(503, "No candidates"))?;
let mut response = cgi::html_response(
200,
- std::iter::once(Ok("<html><body><table>".to_owned()))
- .chain(
- std::io::BufReader::new(cfile)
- .lines()
- .map(|rc| rc.map(|c| format!("<tr><td>{c}</td></tr>"))),
- )
- .chain(std::iter::once(Ok("</table></body></html>".to_owned())))
+ std::iter::once(Ok(HTML_HEADER.to_owned()))
+ .chain(std::io::BufReader::new(cfile).lines().map(|rc| {
+ rc.map(|c| format!("<tr><td><input type=\"checkbox\"></td><td>{c}</td></tr>"))
+ }))
+ .chain(std::iter::once(Ok(HTML_FOOTER.to_owned())))
.collect::<std::io::Result<String>>()
.map_err(|_| cgi::text_response(503, "Missing candidates"))?,
);