1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
package LinkCheck::Task::CheckLinks;
use Mojo::Base 'Mojolicious::Plugin';
use Mojo::URL;
sub register {
my ($self, $app) = @_;
$app->minion->add_task(check_links => \&_check_links);
}
sub _check_links {
my ($job, $url) = @_;
my @results;
my $ua = $job->app->ua;
my $res = $ua->get($url)->result;
push @results, [$url, $res->code];
for my $link ($res->dom->find('a[href]')->map(attr => 'href')->each) {
my $abs = Mojo::URL->new($link)->to_abs(Mojo::URL->new($url));
$res = $ua->head($abs)->result;
push @results, [$link, $res->code];
}
$job->finish(\@results);
}
1;
|