aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xatom.cgi63
-rwxr-xr-xindex.cgi1
2 files changed, 64 insertions, 0 deletions
diff --git a/atom.cgi b/atom.cgi
new file mode 100755
index 0000000..3930aaa
--- /dev/null
+++ b/atom.cgi
@@ -0,0 +1,63 @@
+#!/usr/bin/env ruby
+require "rubygems"
+require "atom"
+require "yaml"
+require "pp"
+load "index.cgi"
+
+cgi = CGI.new
+
+feed = Atom::Feed.new
+if File.exist?("data.yaml")
+
+ poll = YAML::load_file("data.yaml")
+
+
+ feed.title = poll.name
+ feed.id = "urn:dudle:#{poll.class}:#{poll.name}"
+ feed.updated = File.new("data.yaml").mtime
+
+ feed.authors << Atom::Person.new(:name => 'dudle automatic notificator')
+
+ log = `export LC_ALL=de_DE.UTF-8; bzr log --forward`.split("-"*60)
+ log.collect!{|s| s.scan(/\nrevno:.*\ncommitter.*\n.*\ntimestamp: (.*)\nmessage:\n (.*)/).flatten}
+ log.shift
+ log.collect!{|t,c| [DateTime.parse(t),c]}
+
+ log.each_with_index {|l,i|
+ feed.entries << Atom::Entry.new do |e|
+ e.title = l[1]
+ e.links << Atom::Link.new(:href => "http://#{cgi.server_name}#{cgi.script_name.gsub(/atom.cgi$/,"")}?revision=#{i+1}")
+ e.id = "urn:#{poll.class}:#{poll.name}:rev:#{i+1}"
+ e.updated = l[0]
+ end
+ }
+
+else
+ feed.title = "dudle"
+ feed.id = "urn:dudle:main"
+ feed.authors << Atom::Person.new(:name => 'dudle automatic notificator')
+
+ Dir.glob("*/data.yaml").sort_by{|f|
+ File.new(f).mtime
+ }.reverse.collect{|f|
+ f.gsub(/\/data\.yaml$/,'')
+ }.each{|site|
+ unless YAML::load_file("#{site}/data.yaml" ).hidden
+ unless defined?(firstround)
+ firstround = false
+ feed.updated = File.new("#{site}/data.yaml").mtime
+ end
+ feed.entries << Atom::Entry.new do |e|
+ e.title = site
+ e.links << Atom::Link.new(:href => site)
+ e.id = "urn:dudle:main:#{site}"
+ e.updated = File.new("#{site}/data.yaml").mtime
+ end
+ end
+ }
+
+end
+
+puts "Content-type: application/atom+xml\n\n"
+puts feed.to_xml
diff --git a/index.cgi b/index.cgi
index 34a43f3..c945f38 100755
--- a/index.cgi
+++ b/index.cgi
@@ -453,6 +453,7 @@ else
puts <<HEAD
<head>
<title>dudle</title>
+ <link rel="alternate" type="application/atom+xml" href="atom.cgi" />
</head>
<body>
HEAD