### Unstable endpoints
/$LISTNAME/?r=$GIT_COMMIT -> HTML only
-/$LISTNAME/atom.xml -> Atom feed
+/$LISTNAME/new.atom -> Atom feed
#### Optional, relies on Search::Xapian
-/$LISTNAME/t/$MESSAGE_ID/ -> HTML content of thread
-/$LISTNAME/t/$MESSAGE_ID/atom -> Atom feed for thread
-/$LISTNAME/t/$MESSAGE_ID/mbox.gz -> gzipped mbox of thread
+/$LISTNAME/t/$MESSAGE_ID/ -> HTML content of thread
+/$LISTNAME/t/$MESSAGE_ID/atom -> Atom feed for thread
+/$LISTNAME/t/$MESSAGE_ID/mbox.gz -> gzipped mbox of thread
### Stable endpoints
-/$LISTNAME/m/$MESSAGE_ID/ -> HTML content (short quotes)
-/$LISTNAME/m/$MESSAGE_ID -> 301 to above
-/$LISTNAME/m/$MESSAGE_ID/raw -> raw mbox
-/$LISTNAME/f/$MESSAGE_ID/ -> HTML content (full quotes)
-/$LISTNAME/f/$MESSAGE_ID -> 301 to above
-/$LISTNAME/f/$MESSAGE_ID/raw (*) -> 301 to ../m/$MESSAGE_ID/raw
+/$LISTNAME/m/$MESSAGE_ID/ -> HTML content (short quotes)
+/$LISTNAME/m/$MESSAGE_ID -> 301 to above
+/$LISTNAME/m/$MESSAGE_ID/raw -> raw mbox
+/$LISTNAME/f/$MESSAGE_ID/ -> HTML content (full quotes)
+/$LISTNAME/f/$MESSAGE_ID -> 301 to above
+/$LISTNAME/f/$MESSAGE_ID/raw [1] -> 301 to ../m/$MESSAGE_ID/raw
-### Legacy endpoints (may be ambiguous given Message-IDs with similar suffies)
-/$LISTNAME/m/$MESSAGE_ID.html -> 301 to $MESSAGE_ID/
-/$LISTNAME/m/$MESSAGE_ID.txt -> 301 to $MESSAGE_ID/raw
-/$LISTNAME/f/$MESSAGE_ID.html -> 301 to $MESSAGE_ID/
-/$LISTNAME/f/$MESSAGE_ID.txt (*) -> 301 to ../m/$MESSAGE_ID/raw
+### Legacy endpoints (may be ambiguous given Message-IDs with similar suffixes)
+/$LISTNAME/m/$MESSAGE_ID.html -> 301 to $MESSAGE_ID/
+/$LISTNAME/m/$MESSAGE_ID.txt -> 301 to $MESSAGE_ID/raw
+/$LISTNAME/f/$MESSAGE_ID.html -> 301 to $MESSAGE_ID/
+/$LISTNAME/f/$MESSAGE_ID.txt [1] -> 301 to ../m/$MESSAGE_ID/raw
+/$LISTNAME/atom.xml [2] -> identical to /$LISTNAME/new.atom
FIXME: we must refactor/cleanup/add tests for most of our CGI before
adding more endpoints and features.
-(*) These URLs were never linked, but only exist as a convenience to folks
+[1] These URLs were never linked, but only exist as a convenience to folks
who edit existing URLs
+[2] Do not make this into a 301 since feed readers may not follow them as well
+ as normal browsers do.
+
Encoding notes
--------------
if (my $mid = $ctx->{mid}) { # per-thread feed:
$rv{atomurl} = "$url_base/t/$mid/atom";
} else {
- $rv{atomurl} = "$url_base/atom.xml";
+ $rv{atomurl} = "$url_base/new.atom";
}
} else {
$url_base = "http://example.com";
- $rv{atomurl} = "$url_base/atom.xml";
+ $rv{atomurl} = "$url_base/new.atom";
}
$rv{url} ||= "$url_base/";
$rv{midurl} = "$url_base/m/";
invalid_list(\%ctx, $1) || redirect_list_index($cgi);
} elsif ($path_info =~ m!$LISTNAME_RE(?:/|/index\.html)?\z!o) {
invalid_list(\%ctx, $1) || get_index(\%ctx);
- } elsif ($path_info =~ m!$LISTNAME_RE/atom\.xml\z!o) {
+ } elsif ($path_info =~ m!$LISTNAME_RE/(?:atom\.xml|new\.atom)\z!o) {
invalid_list(\%ctx, $1) || get_atom(\%ctx);
# single-message pages
$ret;
}
-# /$LISTNAME/atom.xml -> Atom feed, includes replies
+# /$LISTNAME/new.atom -> Atom feed, includes replies
sub get_atom {
my ($ctx) = @_;
require PublicInbox::Feed;