Commit Briefs

964b49d98a Oliver Lowe

Rename some templates (main)

Make the channel template re-usable Add handler for channel page List episode titles


5dfdd66b09 Oliver Lowe

Add initial channel handler


e396d327ce Oliver Lowe

Wrap channel results so we can add extra data

Link to channel


f018f5a676 Oliver Lowe

Rename "Feeds" to Channels as that's what they are

Make button link styles reuseable Add button that will link to the channel


425992826e Oliver Lowe

readme: add pkg.go.dev link


1045eb7497 Oliver Lowe

rss: handle more timestamp variants

I parsed every feed listed in opml/otl.opml and found a bunch of variants of RFC 822 and RFC 1123 timestamps used.


5f9e632593 GitHub

Merge pull request #8 from ollytom/main

rss: handle valid empty fields


f3e9104510 Oliver Lowe

rss: handle valid empty fields

Ran into a problem when trying to parse the feed at https://hnrss.org/frontpage. That feed's channel has no pubdate element set; UnmarshalXML errors on timestamp parsing with as it gets an empty string. Reading the spec I found very few fields are actually required. Funnily enough testdata/empty.xml is a valid RSS feed - I even verified using the official RSS validator at https://www.rssboard.org/rss-validator !


c4a56c0a8e Matt Streatfield

Display most appropriate channel data

Improve channel styling


93ff9d7f21 GitHub

Merge pull request #7 from ollytom/js

service: support queries without javascript


d33056098f GitHub

Merge pull request #6 from ollytom/time

rss: store pubdate etc. as native time.Time


59dafdf0ad Oliver Lowe

service: support queries without javascript

I was curious how it all worked if I disabled javascript entirely. Pretty cool how it all "just worked" once I set the usual `action` attr in the form element. While here fix little nit about using a boolean type for a boolean condition


79a20b3c5f Oliver Lowe

rss: store pubdate etc. as native time.Time

This uses a technique I've used a few times to work with loosely typed data in XML and JSON. The original idea is from [icholy]. It's a little tricky, but it's easy to test. [icholy]: https://choly.ca/post/go-json-marshalling/


874b706b1c Matt Streatfield

Improve parsing of additional rss channel meta data

Initial rendering of channel results Move handlers into their own file


ed95fc8404 Matt Streatfield

Create DB package for reading/writing data

Implement URL detection for search and lookup RSS feed


38dff90916 GitHub

Merge pull request #4 from ollytom/main

rss: use built-in RFC 1123 time format


37ef97ad5e Oliver Lowe

rss: use built-in RFC 1123 time format

Numeric timezone variant. Timestamps :(


722a6f3930 Matt Streatfield

Move handlers to their own service


5a25e6098d Matt Streatfield

Add RSS decoder


9e0ba93436 GitHub

Merge pull request #3 from ollytom/main

add opml package


8dfb72dda0 Oliver Lowe

add opml package

Feed readers use OPML to exchange lists of feeds, which is what any applications developed here may do at some point, too. This package only does decoding for now; I dumped my own feeds out of my own feed reader app as a quick test to see how tricky this would be!


ccfca0aabb GitHub

Merge pull request #2 from ollytom/main

atom: implement feed decoding


848b29c4c6 Oliver Lowe

atom: implement feed decoding

Terrible test but hopefully enough for a sanity check in these (very!) early stages!


33d9e23c99 GitHub

Merge pull request #1 from ollytom/main

import atom package


a9f96a604b Oliver Lowe

import atom package

Atom is easier feed format to parse as it's stricter than RSS 2.0. Both are common in the wild but I thought Atom would be a good start. And of course this a better place for the package rather than my random Go package repo.