1use {
2 crate::*,
3 std::{
4 path::PathBuf,
5 },
6};
7
8struct CsvPrinter {}
10
11impl LineConsumer for CsvPrinter {
12 fn start_eating(
13 &mut self,
14 _first_date: Date,
15 ) {
16 println!("date,time,remote address,method,path,status,bytes sent,referer");
17 }
18 fn eat_line(
19 &mut self,
20 line: LogLine,
21 _raw_line: &str,
22 filtered_out: bool,
23 ) {
24 if filtered_out { return; }
25 println!(
26 r#"{},{},{},{},"{}",{},{},"{}""#,
27 line.date(),
28 line.time(),
29 line.remote_addr,
30 line.method,
31 line.path,
32 line.status,
33 line.bytes_sent,
34 line.referer,
35 );
36 }
37}
38
39pub fn print_csv_lines(
40 path: &[PathBuf],
41 args: &args::Args,
42) -> Result<(), RhitError> {
43 let mut printer = CsvPrinter{};
44 let mut file_reader = FileReader::new(path, args, &mut printer)?;
45 time!("reading files", file_reader.read_all_files())?;
46 Ok(())
47}
48