1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
//! AWS CloudFront logs parser
//!
//! The log file format is described in the official documentation:
//! <https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html#LogFileFormat>

#![cfg_attr(docsrs, feature(doc_auto_cfg))]
#![allow(deprecated)]

// @@@ NEW STRUCTURE @@@

mod shared;

pub mod borrowed;
pub mod consts;
pub mod owned;
pub mod referential; // not sure about the module name yet
pub mod types;

pub use consts::*;
pub use types::*;

// useful helper function for minimizing validation needs
pub use shared::validate_line;

#[doc(inline)]
pub use borrowed::{
    UnvalidatedRawLogline, UnvalidatedSimpleLogline, ValidatedRawLogline, ValidatedSimpleLogline,
};

#[cfg(feature = "chrono")]
#[doc(inline)]
pub use borrowed::typed::{UnvalidatedChronoLogline, ValidatedChronoLogline};

#[cfg(feature = "time")]
#[doc(inline)]
pub use borrowed::typed::{UnvalidatedTimeLogline, ValidatedTimeLogline};

#[cfg(feature = "parquet")]
#[doc(inline)]
pub use borrowed::{UnvalidatedParquetLogline, ValidatedParquetLogline};

#[doc(inline)]
pub use referential::{
    UnvalidatedRawLogline as OwningUnvalidatedRawLogline,
    UnvalidatedSimpleLogline as OwningUnvalidatedSimpleLogline,
    ValidatedRawLogline as OwningValidatedRawLogline,
    ValidatedSimpleLogline as OwningValidatedSimpleLogline,
};

#[cfg(feature = "chrono")]
#[doc(inline)]
pub use referential::typed::{
    UnvalidatedChronoLogline as OwningUnvalidatedChronoLogline,
    ValidatedChronoLogline as OwningValidatedChronoLogline,
};

#[cfg(feature = "time")]
#[doc(inline)]
pub use referential::typed::{
    UnvalidatedTimeLogline as OwningUnvalidatedTimeLogline,
    ValidatedTimeLogline as OwningValidatedTimeLogline,
};

#[cfg(feature = "parquet")]
#[doc(inline)]
pub use referential::{
    UnvalidatedParquetLogline as OwningUnvalidatedParquetLogline,
    ValidatedParquetLogline as OwningValidatedParquetLogline,
};

// === tests ===

#[cfg(test)]
mod tests;

// !!! DEPRECATED !!!

#[deprecated(
    since = "0.7.0",
    note = "use new modules/types instead (borrowed, owned, referential)"
)]
mod raw;
#[deprecated(
    since = "0.7.0",
    note = "use new modules/types instead (borrowed, owned, referential)"
)]
mod simple;

#[deprecated(
    since = "0.7.0",
    note = "use new modules/types instead (borrowed, owned, referential)"
)]
#[cfg(feature = "time")]
mod typed;

#[deprecated(
    since = "0.7.0",
    note = "use new modules/types instead (borrowed, owned, referential)"
)]
#[cfg(feature = "parquet")]
mod parquet;

#[deprecated(
    since = "0.7.0",
    note = "use new modules/types instead (borrowed, owned, referential)"
)]
pub mod deprecated {
    pub use crate::raw::{CheckedRawLogLine, CheckedRawLogLineView, SmartRawLogLineView};

    #[cfg(feature = "alloc")]
    pub use crate::simple::SimpleLogLine;

    #[cfg(feature = "time")]
    pub use crate::typed::TypedLogLine;

    #[cfg(feature = "parquet")]
    pub use crate::parquet::ParquetLogLine;
}

pub use deprecated::*;