package Bookmarks::Utils;
use strict;
use warnings;
use LWP::UserAgent;
use URI::URL;
my $ua=LWP::UserAgent->new();
sub check_link {
my ($url)=@_;
return 1 if $url!~/^http:/;
return $ua->head($url)->is_success();
}
sub get_site_icon {
my ($url)=@_;
return if $url!~/^http:/;
my $res=$ua->get($url);
return unless $res->is_success();
my $page=$res->decoded_content();
my ($favicon)= grep {defined $_ and $_ ne ''}
($page =~
m{<link
\s+
(?:
rel="(?:shortcut\ +)?icon"
\s+
href="(.*?)"
)|(?:
href="(.*?)"
\s+
rel="(?:shortcut\ +)?icon"
)}ismx);
if (!$favicon) {
$favicon='/favicon.ico';
}
$favicon=URI::URL->new($favicon,$url)->abs->canonical->as_string;
$res=$ua->get($favicon);
if ($res->is_success() and $res->header('Content-type') !~ /^text/) {
return ($res->decoded_content(),$res->header('Content-type'));
}
else {
return;
}
}
1;