Introduction
Introduction Statistics Contact Development Disclaimer Help
Add atom feeds, still needs some cleanup, but seems to mostly work. - swerc - a…
git clone git://git.suckless.org/swerc
Log
Files
Refs
README
---
commit 70f9b9e52b718345b98ad742895f6f21ab3f4f2a
parent bbc643c2cdc09a812c468c812355d95f8cdca4ae
Author: [email protected] <unknown>
Date: Wed, 26 Nov 2008 04:56:39 +0100
Add atom feeds, still needs some cleanup, but seems to mostly work.
Diffstat:
M bin/werc.rc | 24 +++++++++++++++++-------
M lib/feeds/atom.tpl | 68 +++++++++++++++++++++++++++++…
M lib/feeds/html.tpl | 2 +-
3 files changed, 86 insertions(+), 8 deletions(-)
---
diff --git a/bin/werc.rc b/bin/werc.rc
@@ -184,12 +184,19 @@ fn select_handler {
perm_redirect `{ echo $REQUEST_URI|sed 's/.html$//' }
# Rss feeds. TODO: we should check that the request is for a real blog dir
- if not if (~ $REQUEST_URI */index.rss) {
- uri = `{echo $uri | sed 's/index.rss$//'}
+ if not if (~ $REQUEST_URI */index.rss */index.atom) {
+ uri = `{echo $uri | sed 's/index.(rss|atom)$//'}
if (~ $#blogDirs 0)
- blogDirs = $sitedir^$uri
+ blogDirs = $sitedir^'/'$uri
uri=$baseuri$"uri
- master_template=feeds/rss20.tpl
+
+ if (~ $REQUEST_URI */index.rss) {
+ master_template=feeds/rss20.tpl
+ }
+ if not if (~ $REQUEST_URI */index.atom) {
+ master_template=feeds/atom.tpl
+ }
+
response_format=raw
}
@@ -198,10 +205,13 @@ fn select_handler {
if (~ $#blogDirs 0)
blogDirs = `{basename -d $body}
- rssuri=`{basename -d $uri}
- rssuri=$baseuri`{cleanname $"rssuri^/index.rss}
+ u=`{cleanname `{basename -d $uri}}
+ rssuri=$baseuri^$"u^/index.rss
+ atomuri=$baseuri^$"u^/index.atom
extraHeaders=$"extraHeaders ^ \
'<link rel="alternate" type="application/rss+xml" title="RSS" href…
+ <link rel="alternate" type="application/atom+xml" title="ATOM" href="'…
+
'
set_handler tpl_handler lib/feeds/html.tpl
}
@@ -278,7 +288,7 @@ fpath=$sitedir
for (i in ('' $args)) {
fpath = $fpath/$i
# We don't want blog settings to cascade into posts, note that we are inBl…
- if (! ~ $#blogDirs 0 && ! ~ $req_path */index.rss */[bB]log */[bB]log/) {
+ if (! ~ $#blogDirs 0 && ! ~ $req_path */index.rss */index.atom */[bB]log *…
inBlog = $blogDirs
blogDirs = ()
}
diff --git a/lib/feeds/atom.tpl b/lib/feeds/atom.tpl
@@ -1,5 +1,73 @@
+Content-Type: application/atom+xml
+
<?xml version="1.0" encoding="utf-8"?>
+
<!-- XXX TODO: See for more info:http://www.tbray.org/ongoing/When/200x/2005/0…
+%{
+fn statpost {
+ f = $1
+
+ updated = `{/bin/date --rfc-3339'=seconds' -r $f |sed 's/ /T/'}
+ post_uri = `{echo $f | sed 's,^'$sitedir',,'}
+ title=`{basename $f | sed 's/^[0-9\-]*_(.*)\.md$/\1/; s/_/ /g' }
+ date=`{/bin/date -Rd `{basename $f |sed 's/(^[0-9\-]*).*/\1/; s/-[0-9]…
+ # TODO: use mtime(1) and ls(1) instead of lunix's stat(1)
+ stat=`{stat -c '%Y %U' $f}
+ #mdate=`{/bin/date -Rd $stat(1)} # Not used because it is unreliable
+ post_uri=$baseuri^`{cleanname `{echo -n $uri | sed 's/\.(md|tpl)//g'}}
+ by=$stat(2)
+ ifs=() { summary=`{cat $f | crop_text 1024 | $formatter } }
+}
+updated = `{/bin/date --rfc-3339'=seconds' |sed 's/ /T/'}
+%}
+
+<feed xmlns="http://www.w3.org/2005/Atom"
+ xmlns:thr="http://purl.org/syndication/thread/1.0">
+
+ <link rel="self" href="%($uri%)"/>
+ <id>%($uri%)</id>
+ <icon>/favicon.ico</icon>
+
+ <title>%($siteTitle%)</title>
+ <subtitle>%($siteSubTitle%)</subtitle>
+
+ <!-- <updated>2008-09-24T12:47:00-04:00</updated> -->
+ <updated>%($updated%)</updated>
+ <link href="."/>
+
+%{
+ for(f in `{sortedBlogPostList $blogDirs}) {
+ statpost $f
+%}
+ <entry>
+ <!-- <id>tag:intertwingly.net,2004:2899</id> Maybe we should be smarte…
+ <id>%($post_uri%)</id>
+ <link href="%($post_uri%)"/>
+ <title>%($title%)</title>
+ <!-- <link rel="replies" href="2899.atom" thr:count="0"/> -->
+ <author>
+ <name>%($by%)</name>
+ <!--
+ <email>[email protected]</email>
+ <uri>/blog/</uri>
+ -->
+ </author>
+
+
+ <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
+ %($summary%)
+ </div></content>
+
+ <updated>%($updated%)</updated>
+ </entry>
+
+
+% }
+
+</feed>
+
+% exit
+
<feed xmlns="http://www.w3.org/2005/Atom"
xmlns:thr="http://purl.org/syndication/thread/1.0">
<link rel="self" href="http://intertwingly.net/blog/index.atom"/>
diff --git a/lib/feeds/html.tpl b/lib/feeds/html.tpl
@@ -1,7 +1,7 @@
% if (! ~ $blogTitle '')
% echo '<h1>'$"blogTitle'</h1>'
-<div style="text-align:right">(<a href="index.rss">rss feed</a>)</div>
+<div style="text-align:right">(<a href="index.rss">RSS Feed</a>|<a href="index…
%{
for (f in `{ sortedBlogPostList $blogDirs }) {
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.