1
1
use bytes:: Bytes ;
2
- use lookup:: lookup_v2:: parse_value_path;
3
2
use lookup:: OwnedTargetPath ;
4
3
use serde:: { Deserialize , Serialize } ;
5
4
use smallvec:: { smallvec, SmallVec } ;
@@ -9,6 +8,7 @@ use vector_core::{
9
8
event:: { Event , LogEvent } ,
10
9
schema,
11
10
} ;
11
+ use vrl:: path:: PathPrefix ;
12
12
use vrl:: value:: Kind ;
13
13
14
14
use super :: Deserializer ;
@@ -25,7 +25,7 @@ impl BytesDeserializerConfig {
25
25
26
26
/// Build the `BytesDeserializer` from this configuration.
27
27
pub fn build ( & self ) -> BytesDeserializer {
28
- BytesDeserializer :: new ( )
28
+ BytesDeserializer
29
29
}
30
30
31
31
/// Return the type of event build by this deserializer.
@@ -37,7 +37,7 @@ impl BytesDeserializerConfig {
37
37
pub fn schema_definition ( & self , log_namespace : LogNamespace ) -> schema:: Definition {
38
38
match log_namespace {
39
39
LogNamespace :: Legacy => schema:: Definition :: empty_legacy_namespace ( ) . with_event_field (
40
- & parse_value_path ( log_schema ( ) . message_key ( ) ) . expect ( "valid message key" ) ,
40
+ log_schema ( ) . message_key ( ) . expect ( "valid message key" ) ,
41
41
Kind :: bytes ( ) ,
42
42
Some ( "message" ) ,
43
43
) ,
@@ -54,32 +54,16 @@ impl BytesDeserializerConfig {
54
54
/// This deserializer can be considered as the no-op action for input where no
55
55
/// further decoding has been specified.
56
56
#[ derive( Debug , Clone ) ]
57
- pub struct BytesDeserializer {
58
- // Only used with the "Legacy" namespace. The "Vector" namespace decodes the data at the root of the event.
59
- log_schema_message_key : & ' static str ,
60
- }
61
-
62
- impl Default for BytesDeserializer {
63
- fn default ( ) -> Self {
64
- Self :: new ( )
65
- }
66
- }
57
+ pub struct BytesDeserializer ;
67
58
68
59
impl BytesDeserializer {
69
- /// Creates a new `BytesDeserializer`.
70
- pub fn new ( ) -> Self {
71
- Self {
72
- log_schema_message_key : log_schema ( ) . message_key ( ) ,
73
- }
74
- }
75
-
76
60
/// Deserializes the given bytes, which will always produce a single `LogEvent`.
77
61
pub fn parse_single ( & self , bytes : Bytes , log_namespace : LogNamespace ) -> LogEvent {
78
62
match log_namespace {
79
63
LogNamespace :: Vector => log_namespace. new_log_from_data ( bytes) ,
80
64
LogNamespace :: Legacy => {
81
65
let mut log = LogEvent :: default ( ) ;
82
- log. insert ( self . log_schema_message_key , bytes) ;
66
+ log. maybe_insert ( PathPrefix :: Event , log_schema ( ) . message_key ( ) , bytes) ;
83
67
log
84
68
}
85
69
}
@@ -107,15 +91,18 @@ mod tests {
107
91
#[ test]
108
92
fn deserialize_bytes_legacy_namespace ( ) {
109
93
let input = Bytes :: from ( "foo" ) ;
110
- let deserializer = BytesDeserializer :: new ( ) ;
94
+ let deserializer = BytesDeserializer ;
111
95
112
96
let events = deserializer. parse ( input, LogNamespace :: Legacy ) . unwrap ( ) ;
113
97
let mut events = events. into_iter ( ) ;
114
98
115
99
{
116
100
let event = events. next ( ) . unwrap ( ) ;
117
101
let log = event. as_log ( ) ;
118
- assert_eq ! ( log[ log_schema( ) . message_key( ) ] , "foo" . into( ) ) ;
102
+ assert_eq ! (
103
+ log[ log_schema( ) . message_key( ) . unwrap( ) . to_string( ) ] ,
104
+ "foo" . into( )
105
+ ) ;
119
106
}
120
107
121
108
assert_eq ! ( events. next( ) , None ) ;
@@ -124,7 +111,7 @@ mod tests {
124
111
#[ test]
125
112
fn deserialize_bytes_vector_namespace ( ) {
126
113
let input = Bytes :: from ( "foo" ) ;
127
- let deserializer = BytesDeserializer :: new ( ) ;
114
+ let deserializer = BytesDeserializer ;
128
115
129
116
let events = deserializer. parse ( input, LogNamespace :: Vector ) . unwrap ( ) ;
130
117
assert_eq ! ( events. len( ) , 1 ) ;
0 commit comments