Skip to content

Commit 82bd8aa

Browse files
authored
Upgrade dependencies in lambda-events (#650)
* Upgrade base64 to 0.21. * Upgrade serde_with. * Fix a test compilation issue.
1 parent fbf212f commit 82bd8aa

File tree

5 files changed

+33
-15
lines changed

5 files changed

+33
-15
lines changed

lambda-events/Cargo.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ keywords = ["lambda", "aws", "amazon", "events", "S3"]
1515
categories = ["api-bindings", "encoding", "web-programming"]
1616

1717
[dependencies]
18-
base64 = "0.13"
18+
base64 = "0.21"
1919
http = "0.2"
2020
http-body = "0.4"
2121
http-serde = "^1"
2222
serde = "^1"
2323
serde_derive = "^1"
24-
serde_with = { version = "^2", features = ["json"], optional = true }
24+
serde_with = { version = "^3", features = ["json"], optional = true }
2525
serde_json = "^1"
2626
serde_dynamo = { version = "^4.1", optional = true }
2727
bytes = { version = "1", features = ["serde"] }

lambda-events/src/custom_serde/mod.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#[allow(unused)]
2-
use base64::{decode, encode};
2+
use base64::Engine;
33
use chrono::{DateTime, Duration, TimeZone, Utc};
44
use serde;
55
use serde::de::{Deserialize, Deserializer, Error as DeError};
@@ -122,14 +122,16 @@ where
122122
D: Deserializer<'de>,
123123
{
124124
let s: String = String::deserialize(deserializer)?;
125-
decode(s).map_err(DeError::custom)
125+
base64::engine::general_purpose::STANDARD
126+
.decode(s)
127+
.map_err(DeError::custom)
126128
}
127129

128130
pub(crate) fn serialize_base64<S>(value: &[u8], serializer: S) -> Result<S::Ok, S::Error>
129131
where
130132
S: Serializer,
131133
{
132-
serializer.serialize_str(&encode(value))
134+
serializer.serialize_str(&base64::engine::general_purpose::STANDARD.encode(value))
133135
}
134136

135137
/// Deserializes `HashMap<_>`, mapping JSON `null` to an empty map.

lambda-events/src/encodings.rs

+10-2
Original file line numberDiff line numberDiff line change
@@ -192,8 +192,14 @@ impl Body {
192192
/// Panics when aws communicates to handler that request is base64 encoded but
193193
/// it can not be base64 decoded
194194
pub fn from_maybe_encoded(is_base64_encoded: bool, body: &str) -> Body {
195+
use base64::Engine;
196+
195197
if is_base64_encoded {
196-
Body::from(::base64::decode(body).expect("failed to decode aws base64 encoded body"))
198+
Body::from(
199+
::base64::engine::general_purpose::STANDARD
200+
.decode(body)
201+
.expect("failed to decode aws base64 encoded body"),
202+
)
197203
} else {
198204
Body::from(body)
199205
}
@@ -289,7 +295,9 @@ impl Serialize for Body {
289295
Body::Text(data) => {
290296
serializer.serialize_str(::std::str::from_utf8(data.as_ref()).map_err(S::Error::custom)?)
291297
}
292-
Body::Binary(data) => serializer.collect_str(&Base64Display::with_config(data, base64::STANDARD)),
298+
Body::Binary(data) => {
299+
serializer.collect_str(&Base64Display::new(data, &base64::engine::general_purpose::STANDARD))
300+
}
293301
Body::Empty => serializer.serialize_unit(),
294302
}
295303
}

lambda-events/src/event/cloudwatch_logs/mod.rs

+11-6
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,17 @@ impl<'de> Deserialize<'de> for AwsLogs {
6767
where
6868
V: MapAccess<'de>,
6969
{
70+
use base64::Engine;
71+
7072
let mut data = None;
7173
while let Some(key) = map.next_key()? {
7274
match key {
7375
"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+
})?;
7781

7882
let bytes = flate2::read::GzDecoder::new(&bytes[..]);
7983
let mut de = serde_json::Deserializer::from_reader(BufReader::new(bytes));
@@ -98,7 +102,7 @@ impl Serialize for AwsLogs {
98102
where
99103
S: Serializer,
100104
{
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);
102106
let mut gzip = flate2::write::GzEncoder::new(base, flate2::Compression::default());
103107

104108
serde_json::to_writer(&mut gzip, &self.data).map_err(SeError::custom)?;
@@ -125,7 +129,8 @@ mod test {
125129
}
126130
}"#;
127131
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;
129134
assert_eq!("DATA_MESSAGE", data.message_type);
130135
assert_eq!("123456789012", data.owner);
131136
assert_eq!("/aws/lambda/echo-nodejs", data.log_group);
@@ -140,7 +145,7 @@ mod test {
140145
assert_eq!(1552518348220, data.log_events[0].timestamp);
141146
assert_eq!("REPORT RequestId: 6234bffe-149a-b642-81ff-2e8e376d8aff\tDuration: 46.84 ms\tBilled Duration: 47 ms \tMemory Size: 192 MB\tMax Memory Used: 72 MB\t\n", data.log_events[0].message);
142147

143-
let new_json = serde_json::to_string_pretty(&event).unwrap();
148+
let new_json: String = serde_json::to_string_pretty(&event).unwrap();
144149
let new_event: LogsEvent = serde_json::from_str(&new_json).expect("failed to deserialize");
145150
assert_eq!(new_event, event);
146151
}

lambda-events/src/event/dynamodb/attributes.rs

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use base64::Engine;
12
use event::serde_dynamo::AttributeValue;
23
use std::collections::HashMap;
34

@@ -62,7 +63,9 @@ mod test {
6263
let attr: AttributeValue = serde_json::from_value(value.clone()).unwrap();
6364
match attr {
6465
AttributeValue::B(ref b) => {
65-
let expected = base64::decode("dGhpcyB0ZXh0IGlzIGJhc2U2NC1lbmNvZGVk").unwrap();
66+
let expected = base64::engine::general_purpose::STANDARD
67+
.decode("dGhpcyB0ZXh0IGlzIGJhc2U2NC1lbmNvZGVk")
68+
.unwrap();
6669
assert_eq!(&expected, b)
6770
}
6871
other => panic!("unexpected value {:?}", other),
@@ -137,7 +140,7 @@ mod test {
137140
AttributeValue::Bs(ref s) => {
138141
let expected = vec!["U3Vubnk=", "UmFpbnk=", "U25vd3k="]
139142
.into_iter()
140-
.flat_map(base64::decode)
143+
.flat_map(|s| base64::engine::general_purpose::STANDARD.decode(s))
141144
.collect::<Vec<_>>();
142145
assert_eq!(&expected, s);
143146
}

0 commit comments

Comments
 (0)