1use chrono::prelude::*;
2
3use warc::WarcHeader;
4use warc::{BufferedBody, RawRecordHeader, Record, RecordType, WarcWriter};
5
6fn main() -> Result<(), std::io::Error> {
7 let date = Utc::now().to_rfc3339_opts(SecondsFormat::Secs, true);
8 let body = format!("wrote to the file on {}", date);
9 let body = body.into_bytes();
10
11 let headers = RawRecordHeader {
12 version: "1.0".to_owned(),
13 headers: vec![
14 (
15 WarcHeader::RecordID,
16 Record::<BufferedBody>::generate_record_id().into_bytes(),
17 ),
18 (
19 WarcHeader::WarcType,
20 RecordType::WarcInfo.to_string().into_bytes(),
21 ),
22 (WarcHeader::Date, date.into_bytes()),
23 (WarcHeader::IPAddress, "127.0.0.1".to_owned().into_bytes()),
24 (
25 WarcHeader::ContentLength,
26 body.len().to_string().into_bytes(),
27 ),
28 ]
29 .into_iter()
30 .collect(),
31 };
32
33 let mut file = WarcWriter::from_path("warc_example.warc")?;
34
35 let bytes_written = file.write_raw(headers, &body)?;
36
37 println!("{} bytes written.", bytes_written);
38
39 Ok(())
40}