diff options
author | Benjamin Kellermann <Benjamin.Kellermann@gmx.de> | 2008-10-27 00:24:02 +0100 |
---|---|---|
committer | Benjamin Kellermann <Benjamin.Kellermann@gmx.de> | 2008-10-27 00:24:02 +0100 |
commit | a89dacacd5e6c07d90f35bef417e1a009af4235c (patch) | |
tree | d4dbafb0665a9e271e9d765043f3a40a4dbeb63e | |
parent | 6eeef508850cb1b4de316fef5fd1af1f94ea0d53 (diff) |
atom support added (forgot to add file
Diffstat (limited to '')
-rwxr-xr-x | atom.cgi | 63 | ||||
-rwxr-xr-x | index.cgi | 1 |
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 @@ -453,6 +453,7 @@ else puts <<HEAD <head> <title>dudle</title> + <link rel="alternate" type="application/atom+xml" href="atom.cgi" /> </head> <body> HEAD |