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
//!
//! # Usage
//!
//! ```rust
//! use serde::Serialize;
//! use chrono::prelude::*;
//! use flow_record::{Serializer, Record};
//! use flow_record_derive::Record;
//!
//! #[derive(Serialize, Record)]
//! struct SampleStruct {
//! int_value: u32,
//! str_value: String,
//! dtm_value: DateTime<Utc>
//! }
//!
//! let sample_struct = SampleStruct {
//! int_value: 42,
//! str_value: "forty two".into(),
//! dtm_value: Utc.with_ymd_and_hms(2020, 1, 1, 0, 0, 0).unwrap(),
//! };
//!
//! let mut ser = Serializer::new(Vec::new());
//! ser.serialize(&sample_struct).unwrap();
//!
//! let result = ser.into_inner();
//! assert_eq!(result, vec![
//! // header length
//! 0x0,0x0,0x0,0xf,
//!
//! // header
//! 0xc4,0xd,0x52,0x45,0x43,0x4f,0x52,0x44,0x53,0x54,0x52,0x45,0x41,0x4d,0xa,
//!
//! // length of record descriptor
//! 0x0,0x0,0x0,0x4c,
//!
//! 0xc7,0x49,0xe, // ext 8 record of type 0x0e
//! 0x92, // array of length 2
//! 0x2, // 2 (record desciptor)
//! 0x92, // array of length 2
//! 0xac, // string of length 12
//! // "SampleStruct"
//! 0x53,0x61,0x6d,0x70,0x6c,0x65,0x53,0x74,0x72,0x75,0x63,0x74,
//! 0x93, // array of length 3
//! 0x92, // array of length 2
//! 0xa6, // string of length 6
//! 0x75,0x69,0x6e,0x74,0x33,0x32, // "uint32"
//! 0xa9, // string of length 9
//! 0x69,0x6e,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65, // "int_value"
//! 0x92,
//! 0xa6, // string of length 6
//! 0x73,0x74,0x72,0x69,0x6e,0x67,
//! 0xa9,0x73,0x74,0x72,0x5f,0x76,0x61,0x6c,0x75,0x65,
//! 0x92,
//! 0xa8,
//! 0x64,0x61,0x74,0x65,0x74,0x69,0x6d,0x65,
//! 0xa9,
//! 0x64,0x74,0x6d,0x5f,0x76,0x61,0x6c,0x75,0x65,
//! 0x0,0x0,0x0,0x3a, // length of record
//! 0xc7,0x37,0xe,
//! 0x92,
//! 0x1,
//! 0x92,
//! 0x92,
//! 0xac,
//! 0x53,0x61,0x6d,0x70,0x6c,0x65,0x53,0x74,0x72,0x75,0x63,0x74,
//! 0xce, // uint32
//! 0x6,0xd6,0x49,0xca,
//! 0x93, // array of length 3
//! 0x2a,
//! 0xa9, // string of length 9
//! 0x66,0x6f,0x72,0x74,0x79,0x20,0x74,0x77,0x6f,
//! 0xb4, // string of length 20
//! // "2020-01-01T00:00:00Z"
//! 0x32,0x30,0x32,0x30,0x2d,0x30,0x31,0x2d,0x30,0x31,0x54,0x30,0x30,0x3a,0x30,0x30,0x3a,0x30,0x30,0x5a,]);
//! ```
pub mod artifacts;
mod serializer;
mod record_pack_type;
pub use record_pack_type::*;
pub use serializer::DfirSerializer as Serializer;
pub use flow_record_common::*;