diff options
author | Eric Wong <e@80x24.org> | 2014-04-07 20:26:42 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2014-04-07 20:26:42 +0000 |
commit | 7c69497a0126cd613053d881d63586bead07dd0e (patch) | |
tree | 7c9a3b7b143676da6d47b1a420d574e35df0e42c | |
parent | bc205de3d5472c67208440d34089cc5bd6792278 (diff) | |
download | public-inbox-7c69497a0126cd613053d881d63586bead07dd0e.tar.gz |
Passing a giant argument list is to error prone and hard-to-document.
-rw-r--r-- | lib/PublicInbox/Feed.pm | 16 | ||||
-rwxr-xr-x | public-inbox-cgi | 18 | ||||
-rw-r--r-- | t/feed.t | 15 |
3 files changed, 35 insertions, 14 deletions
diff --git a/lib/PublicInbox/Feed.pm b/lib/PublicInbox/Feed.pm index e282dc74..3ac77174 100644 --- a/lib/PublicInbox/Feed.pm +++ b/lib/PublicInbox/Feed.pm @@ -16,13 +16,13 @@ use constant DATEFMT => '%Y-%m-%dT%H:%M:%SZ'; 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", @@ -63,8 +63,12 @@ sub generate { # 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); diff --git a/public-inbox-cgi b/public-inbox-cgi index cfcf3feb..ccfaae37 100755 --- a/public-inbox-cgi +++ b/public-inbox-cgi @@ -73,8 +73,12 @@ sub get_atom_all { 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 @@ -86,7 +90,11 @@ sub get_atom_index { 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 + }); } @@ -44,7 +44,10 @@ EOF # 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"); @@ -78,7 +81,10 @@ EOF # 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"); @@ -100,7 +106,10 @@ EOF # 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"); |