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);
}
}
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 {
if sp.ctype.mimetype.as_str() == TEXT_CALENDAR {
let body = sp.get_body()?;
@ -341,6 +335,12 @@ pub fn extract_alternative(
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 {
if sp.ctype.mimetype.as_str() == TEXT_PLAIN {
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> {
use chrono::{NaiveDateTime, DateTime, Utc};
use chrono::{DateTime, NaiveDateTime, Utc};
let dt = dt.split(':').last().unwrap_or(dt);
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());
}
if let Ok(ndt) = NaiveDateTime::parse_from_str(dt, "%Y%m%dT%H%M%S") {
@ -1372,12 +1372,12 @@ mod tests {
#[test]
fn test_ical_render_2() {
let ical = fs::read_to_string("testdata/ical-example-2.ics").unwrap();
let html = render_ical_summary(&ical).unwrap();
println!("HTML OUTPUT: {}", html);
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>End:</b> 2025-08-13T03:00:00Z<br>"));
assert!(html.contains("<b>Organizer:</b> Family<br>"));
let ical = fs::read_to_string("testdata/ical-example-2.ics").unwrap();
let html = render_ical_summary(&ical).unwrap();
println!("HTML OUTPUT: {}", html);
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>End:</b> 2025-08-13T03:00:00Z<br>"));
assert!(html.contains("<b>Organizer:</b> Family<br>"));
}
}