/usr/local/CPAN/POE-Component-BlogCloud/POE/Component/BlogCloud/SAXHandler.pm
# $Id: SAXHandler.pm 1783 2005-01-09 05:44:52Z btrott $
package POE::Component::BlogCloud::SAXHandler;
use strict;
use base qw( XML::SAX::Base );
use DateTime;
sub start_element {
my $h = shift;
my($ref) = @_;
my $key = $ref->{LocalName};
if ($key eq 'weblogUpdates') {
die "Unknown version number"
unless $ref->{Attributes}{'{}version'}{Value} == 1;
} elsif ($key eq 'weblog') {
my %rec = map { $_ => $ref->{Attributes}{'{}' . $_}{Value} }
qw( name url rss ts service );
my $update = POE::Component::BlogCloud::Update->new;
$update->uri($rec{url});
$update->name($rec{name});
$update->feed_uri($rec{rss});
$update->service($rec{service});
if ($rec{ts}) {
my($y, $mo, $d, $h, $m, $s) = $rec{ts} =~
/^(\d{4})(\d{2})(\d{2})T(\d{2}):(\d{2}):(\d{2})Z$/;
my $dt = DateTime->new(
year => $y,
month => $mo,
day => $d,
hour => $h,
minute => $m,
second => $s,
time_zone => 'UTC',
);
$update->updated_at($dt);
}
$h->{kernel}->yield(got_update => $update);
}
}
1;