@@ -67,13 +67,17 @@ impl<'de> Deserialize<'de> for AwsLogs {
67
67
where
68
68
V : MapAccess < ' de > ,
69
69
{
70
+ use base64:: Engine ;
71
+
70
72
let mut data = None ;
71
73
while let Some ( key) = map. next_key ( ) ? {
72
74
match key {
73
75
"data" => {
74
- let bytes = map
75
- . next_value :: < String > ( )
76
- . and_then ( |string| base64:: decode ( string) . map_err ( Error :: custom) ) ?;
76
+ let bytes = map. next_value :: < String > ( ) . and_then ( |string| {
77
+ base64:: engine:: general_purpose:: STANDARD
78
+ . decode ( string)
79
+ . map_err ( Error :: custom)
80
+ } ) ?;
77
81
78
82
let bytes = flate2:: read:: GzDecoder :: new ( & bytes[ ..] ) ;
79
83
let mut de = serde_json:: Deserializer :: from_reader ( BufReader :: new ( bytes) ) ;
@@ -98,7 +102,7 @@ impl Serialize for AwsLogs {
98
102
where
99
103
S : Serializer ,
100
104
{
101
- let base = base64:: write:: EncoderWriter :: new ( Vec :: new ( ) , base64:: STANDARD_NO_PAD ) ;
105
+ let base = base64:: write:: EncoderWriter :: new ( Vec :: new ( ) , & base64:: engine :: general_purpose :: STANDARD_NO_PAD ) ;
102
106
let mut gzip = flate2:: write:: GzEncoder :: new ( base, flate2:: Compression :: default ( ) ) ;
103
107
104
108
serde_json:: to_writer ( & mut gzip, & self . data ) . map_err ( SeError :: custom) ?;
@@ -125,7 +129,8 @@ mod test {
125
129
}
126
130
}"# ;
127
131
let event: LogsEvent = serde_json:: from_str ( json) . expect ( "failed to deserialize" ) ;
128
- let data = event. aws_logs . data . clone ( ) ;
132
+
133
+ let data = event. clone ( ) . aws_logs . data ;
129
134
assert_eq ! ( "DATA_MESSAGE" , data. message_type) ;
130
135
assert_eq ! ( "123456789012" , data. owner) ;
131
136
assert_eq ! ( "/aws/lambda/echo-nodejs" , data. log_group) ;
@@ -140,7 +145,7 @@ mod test {
140
145
assert_eq ! ( 1552518348220 , data. log_events[ 0 ] . timestamp) ;
141
146
assert_eq ! ( "REPORT RequestId: 6234bffe-149a-b642-81ff-2e8e376d8aff\t Duration: 46.84 ms\t Billed Duration: 47 ms \t Memory Size: 192 MB\t Max Memory Used: 72 MB\t \n " , data. log_events[ 0 ] . message) ;
142
147
143
- let new_json = serde_json:: to_string_pretty ( & event) . unwrap ( ) ;
148
+ let new_json: String = serde_json:: to_string_pretty ( & event) . unwrap ( ) ;
144
149
let new_event: LogsEvent = serde_json:: from_str ( & new_json) . expect ( "failed to deserialize" ) ;
145
150
assert_eq ! ( new_event, event) ;
146
151
}
0 commit comments