SHOWING: First 60
#53,253,063text
if values.is_empty() {
fields.remove(field);
}
Some(value)
}
}
fn remove_and_concatenate_field(
fields: &mut BTreeMap<&[u8], Vec<&[u8]>>,
field: &[u8],
) -> Option<Vec<u8>> {
let value = fields.remove(field)?;
if value.is_empty() {
None
} else {
Some(value.into_iter().flatten().cloned().collect())
}
}
impl From<RawEnvelope> for ParsedEnvelope {
fn from(envelope: RawEnvelope) -> Self {
let body = envelope
.payload
.iter()
.enumerate()
.position(|(i, push)| i % 2 == 0 && push.is_empty());
let mut fields: BTreeMap<&[u8], Vec<&[u8]>> = BTreeMap::new();
let mut incomplete_field = false;
for item in envelope.payload[..body.unwrap_or(envelope.payload.len())].chunks(2) {
match item {
[key, value] => fields.entry(key).or_default().push(value),
_ => incomplete_field = true,
}
}
let duplicate_field = fields.iter().any(|(_key, values)| values.len() > 1);
let content_encoding = remove_field(&mut fields, &CONTENT_ENCODING_TAG);
#45,000,720text