#!/usr/bin/perl -T use strict; use warnings; use CGI::Carp 'fatalsToBrowser'; use XML::Simple; use CGI::Simple; use LWP::UserAgent; use Cache::FileCache; my $cache = new Cache::FileCache({ namespace => 'html_issues', cache_root => '/var/whatwg/cache', cache_depth => 1 }); binmode STDOUT, ':utf8'; my $cgi = new CGI::Simple; my (undef, $action, @data) = split '/', $cgi->path_info; if ($action eq 'source') { print "Content-Type: text/plain\r\n\r\n"; open my $f, $0 or die "Error opening self: $!"; print do { local $/; <$f> }; exit; } print qq{Content-Type: text/html; charset=utf-8\r\n\r\n}; print qq{\n}; my $ua = new LWP::UserAgent; sub request_xml { my (@args) = @_; my $req = new HTTP::Request(POST => 'http://www.whatwg.org/issues/getdata'); $req->content_type('text/plain'); $req->content(join '', map "$_\n", @args); my $res = $ua->request($req); die "Request failed: $res->status_line\n" unless $res->is_success; my $xml = XMLin($res->content, ForceArray => [qw(folder email vote)]); die "Request failed: $xml\n" unless ref $xml; return $xml; } sub get_message_body { my ($id) = @_; my $msg = $cache->get("messagebody $id"); return $msg if $msg; my $xml = request_xml(body => $id); $msg = $xml->{body}; $cache->set("messagebody $id", $msg); return $msg; } sub get_folders_xml { my $xml = $cache->get("folders"); return $xml if $xml; $xml = request_xml('folders'); $cache->set("folders", $xml, "24 hours"); return $xml; } sub get_folder_xml { my ($id) = @_; my $xml = $cache->get("folder $id"); return $xml if $xml; $xml = request_xml(emails => $id); $cache->set("folder $id", $xml, "24 hours"); return $xml; } if (not $action) { my $xml = get_folders_xml(); print qq{
This is a static copy of http://www.whatwg.org/issues/.
\n}; print qq{}.$cgi->escapeHTML($data[0]).qq{\n}; print qq{
Current votes:\n}; if ($xml->{vote}) { print qq{
\n};
print $cgi->escapeHTML($xml->{body});
print qq{\n};
}
elsif ($action eq 'folder_expand') {
my $xml = get_folder_xml($data[0]);
print qq{\n};
print $cgi->escapeHTML(get_message_body($_));
print qq{\n};
}
print qq{\n};
print $cgi->escapeHTML(get_message_body($_));
print qq{\n};
}
print qq{