1pub mod extract;
3mod header;
4mod reader;
5mod writer;
6
7pub use header::*;
8pub use reader::*;
9pub use writer::*;
10
11use thiserror::Error;
12
13#[derive(Error, Debug)]
15pub enum WARCError {
16 #[error("unknown format")]
18 UnknownFormat,
19
20 #[error("malformed header (at offset {offset})")]
22 MalformedHeader {
23 offset: u64,
25 #[source]
27 source: Option<Box<dyn std::error::Error + Send + Sync>>,
28 },
29
30 #[error("wrong block length (at record ID {record_id}")]
32 WrongBlockLength {
33 record_id: String,
35 },
36
37 #[error("invalid field value (with name {name}, at record ID {record_id})")]
39 InvalidFieldValue {
40 name: String,
42 record_id: String,
44 #[source]
46 source: Option<Box<dyn std::error::Error + Send + Sync>>,
47 },
48
49 #[error("malformed footer (at offset {offset})")]
51 MalformedFooter {
52 offset: u64,
54 },
55
56 #[error(transparent)]
58 Io(#[from] std::io::Error),
59}