Pierun umie już pokazać poprawny RSS

Dopisałem kod tworzący kanały RSS. Na razie jest to wersja alpha – tylko dla wersji językowych (np: http://krzaq.cc:8080/rss/lang/en). Następnym zadaniem będzie dodanie RSS dla tagów, a przyszłościowo – dla komentarzy. Niemniej jednak, MVP zbliża się wielkimi krokami.

Commit odpowiedzialny za to można znaleźć tutaj: [link]

Jak widać oczekuje mnie drobny refaktoring (trzeba przenieść generowanie xml poza metodę obsługującą zapytanie), ale powinno to być trywialne.

Z mniej pozytywnych rzeczy, formatowanie dat w bibliotece standardowej D jest bardzo słabe. Wróć. Nie ma go wcale. Aby wypluć datę w formacie zadowalającym RSS validatora, musiałem wspomóc się takim potworkiem:

private string toLegitDate(DateTime dt)
{
    SysTime date = cast(SysTime)dt;
    import std.conv;
 
    auto offset = date.timezone.utcOffsetAt(date.stdTime);
 
    int h, m;
    char sign = offset > -1.dur!"seconds" ? '+' : '-';
    offset.split!("hours", "minutes")(h, m);
    string tz = "%c%02s%02s".format(sign, h, m);
 
    return format(
        "%.3s, %02d %.3s %d %02d:%02d:%02d %s",
        to!string(date.dayOfWeek).capitalize,
        date.day,
        to!string(date.month).capitalize,
        date.year,
        date.hour,
        date.minute,
        date.second,
        tz
    );
}

Leave a Reply

Your email address will not be published.