server: only render text/calendar summary table on calendar invites

This commit is contained in:
Bill Thiede 2025-08-19 11:09:30 -07:00
parent d143b2715d
commit cc994df4e5

View File

@ -328,12 +328,6 @@ pub fn extract_alternative(
return extract_related(sp, part_addr); return extract_related(sp, part_addr);
} }
} }
for sp in &m.subparts {
if sp.ctype.mimetype.as_str() == TEXT_HTML {
let body = sp.get_body()?;
return Ok(Body::html(body));
}
}
for sp in &m.subparts { for sp in &m.subparts {
if sp.ctype.mimetype.as_str() == TEXT_CALENDAR { if sp.ctype.mimetype.as_str() == TEXT_CALENDAR {
let body = sp.get_body()?; let body = sp.get_body()?;
@ -341,6 +335,12 @@ pub fn extract_alternative(
return Ok(Body::html(summary)); return Ok(Body::html(summary));
} }
} }
for sp in &m.subparts {
if sp.ctype.mimetype.as_str() == TEXT_HTML {
let body = sp.get_body()?;
return Ok(Body::html(body));
}
}
for sp in &m.subparts { for sp in &m.subparts {
if sp.ctype.mimetype.as_str() == TEXT_PLAIN { if sp.ctype.mimetype.as_str() == TEXT_PLAIN {
let body = sp.get_body()?; let body = sp.get_body()?;
@ -1299,7 +1299,7 @@ pub fn render_ical_summary(ical_data: &str) -> Result<String, ServerError> {
} }
} }
} }
}, }
_ => {} _ => {}
} }
} }
@ -1324,10 +1324,10 @@ pub fn render_ical_summary(ical_data: &str) -> Result<String, ServerError> {
} }
fn parse_ical_datetime(dt: &str) -> Option<String> { fn parse_ical_datetime(dt: &str) -> Option<String> {
use chrono::{NaiveDateTime, DateTime, Utc}; use chrono::{DateTime, NaiveDateTime, Utc};
let dt = dt.split(':').last().unwrap_or(dt); let dt = dt.split(':').last().unwrap_or(dt);
if let Ok(ndt) = NaiveDateTime::parse_from_str(dt, "%Y%m%dT%H%M%SZ") { if let Ok(ndt) = NaiveDateTime::parse_from_str(dt, "%Y%m%dT%H%M%SZ") {
let dt_utc: DateTime<Utc> = DateTime::from_utc(ndt, Utc); let dt_utc: DateTime<Utc> = TimeZone::from_utc_datetime(&Utc, &ndt);
return Some(dt_utc.format("%Y-%m-%dT%H:%M:%SZ").to_string()); return Some(dt_utc.format("%Y-%m-%dT%H:%M:%SZ").to_string());
} }
if let Ok(ndt) = NaiveDateTime::parse_from_str(dt, "%Y%m%dT%H%M%S") { if let Ok(ndt) = NaiveDateTime::parse_from_str(dt, "%Y%m%dT%H%M%S") {
@ -1372,12 +1372,12 @@ mod tests {
#[test] #[test]
fn test_ical_render_2() { fn test_ical_render_2() {
let ical = fs::read_to_string("testdata/ical-example-2.ics").unwrap(); let ical = fs::read_to_string("testdata/ical-example-2.ics").unwrap();
let html = render_ical_summary(&ical).unwrap(); let html = render_ical_summary(&ical).unwrap();
println!("HTML OUTPUT: {}", html); println!("HTML OUTPUT: {}", html);
assert!(html.contains("<b>Summary:</b> [tenative] dinner w/ amatute<br>")); assert!(html.contains("<b>Summary:</b> [tenative] dinner w/ amatute<br>"));
assert!(html.contains("<b>Start:</b> 2025-08-13T01:00:00Z<br>")); assert!(html.contains("<b>Start:</b> 2025-08-13T01:00:00Z<br>"));
assert!(html.contains("<b>End:</b> 2025-08-13T03:00:00Z<br>")); assert!(html.contains("<b>End:</b> 2025-08-13T03:00:00Z<br>"));
assert!(html.contains("<b>Organizer:</b> Family<br>")); assert!(html.contains("<b>Organizer:</b> Family<br>"));
} }
} }