From 4ff09652ab9d890ea5fdbcbb1a0e55e2a3ed3d5b Mon Sep 17 00:00:00 2001 From: Astro Date: Thu, 4 May 2023 22:50:39 +0200 Subject: [PATCH] ticker-serve: fix ics linebreaks, PRODID, DTSTAMP --- ticker-serve/src/export.rs | 8 +++++--- ticker-serve/templates/export.ics | 2 ++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ticker-serve/src/export.rs b/ticker-serve/src/export.rs index b392c06..f8397b0 100644 --- a/ticker-serve/src/export.rs +++ b/ticker-serve/src/export.rs @@ -47,13 +47,15 @@ where // .into_iter().collect::>(); let (template, content_type) = f(es); match template.render() { - Ok(rendered) => + Ok(rendered) => { + let ics = rendered.replace('\n', "\r\n"); ( [(HeaderName::from_static("content-type"), HeaderValue::from_static(content_type))] .iter().cloned() .collect::(), - rendered - ).into_response(), + ics + ).into_response() + } Err(e) => ( StatusCode::INTERNAL_SERVER_ERROR, format!("Failed to render template. Error: {}", e), diff --git a/ticker-serve/templates/export.ics b/ticker-serve/templates/export.ics index 1d31137..694a24c 100644 --- a/ticker-serve/templates/export.ics +++ b/ticker-serve/templates/export.ics @@ -1,11 +1,13 @@ BEGIN:VCALENDAR VERSION:2.0 +PRODID:-//astro/ticker//NONSGML v1.0//DE METHOD:PUBLISH X-WR-TIMEZONE;VALUE=TEXT:Europe/Berlin {% for e in events -%} BEGIN:VEVENT SUMMARY:{{ e.summary }} +DTSTAMP:{{ e.dtstart.format("%Y%m%dT%H%M%S").to_string() }} DTSTART:{{ e.dtstart.format("%Y%m%dT%H%M%S").to_string() }} {% if let Some(dtend) = e.dtend -%} DTEND:{{ dtend.format("%Y%m%dT%H%M%S") }}