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 ); } |