CPAN-Testers-Metabase-Feed

 view release on metacpan or  search on metacpan

lib/CPAN/Testers/Metabase/Feed.pm  view on Meta::CPAN

  }
  return $feed;
}


sub as_xml {
  my $self = shift;
  return $self->_feed->as_xml;
}


sub save {
  my ($self, $filename) = @_;
  Carp::croak( "No filename argument provided to save()" ) unless $filename;
  return write_file( $filename, { atomic => 1, binmode => ":utf8" }, $self->as_xml );
}

my %creator_fn;
sub _creator_name {
  my ($self, $resource) = @_;
  return $creator_fn{$resource} if exists $creator_fn{$resource};
  my $creator = $self->ct_metabase->public_librarian->extract( $resource->guid );
  my ($fn_fact) = grep { ref $_ eq 'Metabase::User::FullName' } $creator->facts;
    die "Couldn't find FullName for $resource" unless $fn_fact;
  return $creator_fn{$resource} = $fn_fact->content;
}

__PACKAGE__->meta->make_immutable;
1;



=pod

=head1 NAME

CPAN::Testers::Metabase::Feed - Generate Atom feed for CPAN Testers Reports

=head1 VERSION

version 0.001

=head1 SYNOPSIS

   use CPAN::Testers::Metabase::Feed;
   use CPAN::Testers::Metabase::AWS;
 
   my $mb = CPAN::Testers::Metabase::AWS->new(
     bucket    => 'myS3bucket',
     namespace => 'prod'
   );
 
   my $feed = CPAN::Testers::Metabase::Feed->new( ct_metabase => $mb );
 
   $feed->save('recent.xml');

=head1 DESCRIPTION

This module creates a 'recent reports' feed from a CPAN Testers Metabase
in Atom format.  Each entry has a title with summary information. The content
is HTML-encoded, but when decoded is just JSON text with report metadata.

=head1 ATTRIBUTES

=head2 ct_metabase (required)

A CPAN::Testers::Metabase subclass that will be used to generate
a feed of recent reports.

=head2 since

An ISO8601 date time string. The feed will contain all reports since the given
date.  It defaults to "now" minus one hour.

=head1 METHODS

=head2 as_xml

  $feed->as_xml;

Returns the feed as a string in XML format.

=head2 save

  $feed->save( $filename );

Saves the feed as XML to the given file.  If the file exists, it is replaced
atomically.

=for Pod::Coverage method_names_here

=head1 SEE ALSO

=over

=item *

L<CPAN::Testers::Metabase>

=back

=head1 AUTHOR

David Golden <dagolden@cpan.org>

=head1 COPYRIGHT AND LICENSE

This software is Copyright (c) 2010 by David Golden.

This is free software, licensed under:

  The Apache License, Version 2.0, January 2004

=cut


__END__




( run in 0.942 second using v1.01-cache-2.11-cpan-600a1bdf6e4 )