style(email): Change Part::body_raw to Part::format_body

This commit is contained in:
Birk Tjelmeland
2024-01-25 21:20:22 +01:00
committed by Paolo Barbolini
parent f7849078b8
commit 12580d82f4
2 changed files with 19 additions and 34 deletions

View File

@@ -18,10 +18,11 @@ pub(super) enum Part {
}
impl Part {
pub(super) fn body_raw(&self) -> Vec<u8> {
#[cfg(feature = "dkim")]
pub(super) fn format_body(&self, out: &mut Vec<u8>) {
match self {
Part::Single(part) => part.body_raw(),
Part::Multi(part) => part.body_raw(),
Part::Single(part) => part.format_body(out),
Part::Multi(part) => part.format_body(out),
}
}
}
@@ -142,11 +143,10 @@ impl SinglePart {
out
}
pub(super) fn body_raw(&self) -> Vec<u8> {
let mut out = Vec::new();
/// Format only the signlepart body
fn format_body(&self, out: &mut Vec<u8>) {
out.extend_from_slice(&self.body);
out.extend_from_slice(b"\r\n");
out
}
}
@@ -155,8 +155,7 @@ impl EmailFormat for SinglePart {
write!(out, "{}", self.headers)
.expect("A Write implementation panicked while formatting headers");
out.extend_from_slice(b"\r\n");
out.extend_from_slice(&self.body);
out.extend_from_slice(b"\r\n");
self.format_body(out);
}
}
@@ -390,31 +389,8 @@ impl MultiPart {
out
}
pub(super) fn body_raw(&self) -> Vec<u8> {
let mut out = Vec::new();
let boundary = self.boundary();
for part in &self.parts {
out.extend_from_slice(b"--");
out.extend_from_slice(boundary.as_bytes());
out.extend_from_slice(b"\r\n");
part.format(&mut out);
}
out.extend_from_slice(b"--");
out.extend_from_slice(boundary.as_bytes());
out.extend_from_slice(b"--\r\n");
out
}
}
impl EmailFormat for MultiPart {
fn format(&self, out: &mut Vec<u8>) {
write!(out, "{}", self.headers)
.expect("A Write implementation panicked while formatting headers");
out.extend_from_slice(b"\r\n");
/// Format only the multipart body
fn format_body(&self, out: &mut Vec<u8>) {
let boundary = self.boundary();
for part in &self.parts {
@@ -430,6 +406,15 @@ impl EmailFormat for MultiPart {
}
}
impl EmailFormat for MultiPart {
fn format(&self, out: &mut Vec<u8>) {
write!(out, "{}", self.headers)
.expect("A Write implementation panicked while formatting headers");
out.extend_from_slice(b"\r\n");
self.format_body(out);
}
}
#[cfg(test)]
mod test {
use pretty_assertions::assert_eq;

View File

@@ -525,7 +525,7 @@ impl Message {
pub(crate) fn body_raw(&self) -> Vec<u8> {
let mut out = Vec::new();
match &self.body {
MessageBody::Mime(p) => out = p.body_raw(),
MessageBody::Mime(p) => p.format_body(&mut out),
MessageBody::Raw(r) => out.extend_from_slice(r),
};
out.extend_from_slice(b"\r\n");