~cdrozak/cdro.dev

8a7205e16c52f3e02829b936a0c218e426624f48 — Cezary Drożak 3 months ago b862398
fix(feed): use ISO8601 for date
2 files changed, 4 insertions(+), 31 deletions(-)

M source/cdrozak.website/feed.d
M source/cdrozak.website/util.d
M source/cdrozak.website/feed.d => source/cdrozak.website/feed.d +4 -5
@@ 31,7 31,6 @@ void generateAtomFeed(
  string pagesDir,
  string outputPath,
) {
  import cdrozak.website.util: toRfc822;
  import cdrozak.website.page: Category, makeHtmlUrl;

  // Make sure the destination exists


@@ 49,7 48,7 @@ void generateAtomFeed(
      item.guid = item.link;
      item.pubDate = page.publishDate;

      auto contentPath = pagesDir.buildPath(page.baseName) ~ ".md";
      auto contentPath = pagesDir.buildPath(page.baseName).setExtension(".md");
      if (contentPath.exists) {
        item.description = website.processMarkdown(contentPath.readText);
      }


@@ 57,7 56,7 @@ void generateAtomFeed(
      return item;
    });

  auto buildDate = Clock.currTime();
  auto buildDate = Clock.currTime(UTC());

  auto output = elemX!"rss"(
    [


@@ 69,7 68,7 @@ void generateAtomFeed(
      elemX!"link"(website.url),
      elemX!"description"(feed.description),
      elemX!"generator"(feed.generator),
      elemX!"lastBuildDate"(buildDate.toRfc822),
      elemX!"lastBuildDate"(buildDate.toISOExtString),
      elemX!"atom:link/"(
        [
          "href": feed.selfLink,


@@ 82,7 81,7 @@ void generateAtomFeed(
          elemX!"title"(item.title),
          elemX!"link"(item.link),
          elemX!"guid"(item.link),
          elemX!"pubDate"(item.pubDate.toRfc822),
          elemX!"pubDate"(item.pubDate.toISOExtString),
          elemX!"description"(item.description),
        ))
        .array,

M source/cdrozak.website/util.d => source/cdrozak.website/util.d +0 -26
@@ 13,32 13,6 @@ Element elems(Element[] elements...) {
  return newElement;
}

string toRfc822(Date date) {
  auto time = SysTime(date);
  return toRfc822(time);
}

string toRfc822(SysTime time) {
  import std.math: abs;

  auto utcOffset = time.utcOffset;
  auto offset = utcOffset.split!("hours", "minutes");
  auto offsetSign = utcOffset.isNegative ? '-' : '+';

  return "%s, %02d %s %d %02d:%02d:%02d %s%02d%02d".format(
    time.dayOfWeek.dayOfWeekToString[0..3],
    time.day,
    time.month.monthToString[0..3],
    time.year,
    time.hour,
    time.minute,
    time.second,
    offsetSign,
    offset.hours.abs,
    offset.minutes.abs,
  );
}

string dayOfWeekToString(DayOfWeek dayOfWeek) {
  return dayOfWeek.predSwitch!"a == b"(
    DayOfWeek.mon, "Monday",