use PublicInbox::View;
# main function
-# FIXME: takes too many args, cleanup
sub generate {
- my ($class, $git_dir, $max, $pi_config, $listname, $cgi, $top) = @_;
- $max ||= 25;
+ my ($class, $args) = @_;
+ my $max = $args->{max} || 25;
+ my $top = $args->{top}; # bool
- local $ENV{GIT_DIR} = $git_dir;
- my $feed_opts = get_feedopts($pi_config, $listname, $cgi);
+ local $ENV{GIT_DIR} = $args->{git_dir};
+ my $feed_opts = get_feedopts($args);
my $feed = XML::Atom::SimpleFeed->new(
title => $feed_opts->{description} || "unnamed feed",
# private functions below
sub get_feedopts {
- my ($pi_config, $listname, $cgi) = @_;
+ my ($args) = @_;
+ my $pi_config = $args->{pi_config};
+ my $listname = $args->{listname};
+ my $cgi = $args->{cgi};
my %rv;
+
if ($pi_config && defined $listname && length $listname) {
foreach my $key (qw(description address)) {
$rv{$key} = $pi_config->get($listname, $key);
print $cgi->header(-type => "application/xml", -charset => 'us-ascii',
-status => '200 OK');
- print PublicInbox::Feed->generate($git_dir, undef,
- $pi_config, $listname, $cgi);
+ print PublicInbox::Feed->generate({
+ git_dir => $git_dir,
+ pi_config => $pi_config,
+ listname => $listname,
+ cgi => $cgi
+ });
}
# /$LISTNAME/index.atom.xml -> Atom feed
require PublicInbox::Feed;
print $cgi->header(-type => "application/xml", -charset => 'us-ascii',
-status => '200 OK');
-
- print PublicInbox::Feed->generate($git_dir, undef,
- $pi_config, $listname, $cgi, 1);
+ print PublicInbox::Feed->generate({
+ git_dir => $git_dir,
+ pi_config => $pi_config,
+ listname => $listname,
+ cgi => $cgi,
+ top => 1
+ });
}
# check initial feed
{
- my $feed = PublicInbox::Feed->generate($git_dir, 3);
+ my $feed = PublicInbox::Feed->generate({
+ git_dir => $git_dir,
+ max => 3
+ });
if ($have_xml_feed) {
my $p = XML::Feed->parse(\$feed);
is($p->format, "Atom", "parsed atom feed");
# check spam shows up
{
- my $spammy_feed = PublicInbox::Feed->generate($git_dir, 3);
+ my $spammy_feed = PublicInbox::Feed->generate({
+ git_dir => $git_dir,
+ max => 3
+ });
if ($have_xml_feed) {
my $p = XML::Feed->parse(\$spammy_feed);
is($p->format, "Atom", "parsed atom feed");
# spam no longer shows up
{
- my $feed = PublicInbox::Feed->generate($git_dir, 3);
+ my $feed = PublicInbox::Feed->generate({
+ git_dir => $git_dir,
+ max => 3
+ });
if ($have_xml_feed) {
my $p = XML::Feed->parse(\$feed);
is($p->format, "Atom", "parsed atom feed");