CGI bin for generating a QR code

add headers

+9 -3
+9 -3
src/main.rs
··· 5 5 use serde_hex::{SerHexOpt, StrictCap}; 6 6 use serde_querystring::ParseMode; 7 7 use std::env; 8 - use std::io::stdout; 8 + use std::io::{Write, stdout}; 9 9 10 10 #[derive(Deserialize, Debug)] 11 11 struct Options { ··· 34 34 if let Some(bg) = options.bg { 35 35 renderer.light_color(Rgba::<u8>(bg)); 36 36 } 37 - let encoder = PngEncoder::new(stdout().lock()); 37 + let mut stdout = stdout().lock(); 38 + writeln!(stdout, "Content-type: image/png").map_err(|error| error.to_string())?; 39 + writeln!(stdout, "Content-disposition: attachment; filename=qr.png") 40 + .map_err(|error| error.to_string())?; 41 + writeln!(stdout).map_err(|error| error.to_string())?; 42 + let encoder = PngEncoder::new(stdout); 38 43 let image = renderer.build(); 39 44 encoder 40 45 .write_image( ··· 49 54 50 55 fn main() { 51 56 if let Err(error) = handle() { 52 - eprintln!("{error}"); 57 + println!("Content-type: text/plain"); 58 + println!("{error}"); 53 59 } 54 60 }