Contenu connexe
Similaire à エロサイト管理者の憂鬱3 - Hokkaiodo.pm#4 - (20)
エロサイト管理者の憂鬱3 - Hokkaiodo.pm#4 -
- 25. ./
!"" repo
# !"" Changes
# !"" MANIFEST.SKIP
# !"" Makefile.PL
# !"" README
# !"" lib
# # %"" SampleApp.pm
# !"" t
# # %"" 00_compile.t
# %"" xt
# !"" 01_podspell.t
# !"" 02_perlcritic.t
# !"" 03_pod.t
# %"" perlcriticrc
%"" sandbox
- 39. ./lib
!"" SampleApp
# !"" CLI
# # %"" Crawler.pm
# !"" Role.pm use Mouse::Role;
# %"" Web
# !"" API.pm use Mouse;
with “SampleApp::Role”;
# %"" Controller
# %"" Root.pm $c->model(“API”)->get_entries();
%"" SampleApp.pm
- 48. use LWP::UserAgent;
use Email::Sender::Simple qw(sendmail);
use Email::MIME;
use Try::Tiny;
use YAML qw(LoadFile);
use Path::Class qw( file );
my $file = $ARGV[0] || "config.yaml";
die "Can't open $file" unless ( -f file($file)->stringify );
my $config = LoadFile( file($file) );
my $ua = LWP::UserAgent->new( agent => 'Monita/0.01', timeout => 30 );
for my $url ( @{ $config->{url} } ) {
my $res = $ua->get($url);
send_report( $res ) unless $res->is_success;
}
sub send_report {
my $res = shift;
my $email = Email::MIME->create(
header => [
From => $config->{from},
To => $config->{to},
Subject => $res->request->uri . ' : ' . $res->code,
],
attributes => { content_type => 'text/plain', },
body => $res->status_line,
);
try { sendmail($email) }
catch { my $error = $_; warn $error->message };
}