X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/3d7147992ab24d953c87b91f75851ca45895073c..270fd45c5d30c06f69e18488f08a7f6bdec95813:/IkiWiki/Plugin/aggregate.pm diff --git a/IkiWiki/Plugin/aggregate.pm b/IkiWiki/Plugin/aggregate.pm index 7d4565342..e00116759 100644 --- a/IkiWiki/Plugin/aggregate.pm +++ b/IkiWiki/Plugin/aggregate.pm @@ -16,7 +16,8 @@ my %guids; sub import { hook(type => "getopt", id => "aggregate", call => \&getopt); hook(type => "getsetup", id => "aggregate", call => \&getsetup); - hook(type => "checkconfig", id => "aggregate", call => \&checkconfig); + hook(type => "checkconfig", id => "aggregate", call => \&checkconfig, + last => 1); hook(type => "needsbuild", id => "aggregate", call => \&needsbuild); hook(type => "preprocess", id => "aggregate", call => \&preprocess); hook(type => "delete", id => "aggregate", call => \&delete); @@ -57,13 +58,24 @@ sub getsetup () { safe => 1, rebuild => 0, }, + cookiejar => { + type => "string", + example => { file => "$ENV{HOME}/.ikiwiki/cookies" }, + safe => 0, # hooks into perl module internals + description => "cookie control", + }, } sub checkconfig () { if (! defined $config{aggregateinternal}) { $config{aggregateinternal}=1; } + if (! defined $config{cookiejar}) { + $config{cookiejar}={ file => "$ENV{HOME}/.ikiwiki/cookies" }; + } + # This is done here rather than in a refresh hook because it + # needs to run before the wiki is locked. if ($config{aggregate} && ! ($config{post_commit} && IkiWiki::commit_hook_enabled())) { launchaggregation(); @@ -390,8 +402,8 @@ sub garbage_collect () { # any guid whose feed is gone should be removed if (! exists $feeds{$guid->{feed}}) { if (exists $guid->{page}) { - unlink "$config{srcdir}/".htmlfn($guid->{page}); - unlink $IkiWiki::Plugin::transient::transientdir."/".htmlfn($guid->{page}); + unlink $IkiWiki::Plugin::transient::transientdir."/".htmlfn($guid->{page}) + || unlink "$config{srcdir}/".htmlfn($guid->{page}); } delete $guids{$guid->{guid}}; } @@ -510,7 +522,11 @@ sub aggregate (@) { } $feed->{feedurl}=pop @urls; } - my $res=URI::Fetch->fetch($feed->{feedurl}); + my $res=URI::Fetch->fetch($feed->{feedurl}, + UserAgent => LWP::UserAgent->new( + cookie_jar => $config{cookiejar}, + ), + ); if (! $res) { $feed->{message}=URI::Fetch->errstr; $feed->{error}=1;