summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2010-02-12 19:31:21 -0600
committerJesse Luehrs <doy@tozt.net>2010-02-12 19:31:21 -0600
commit4ccef75442e9b56054b2c7929542e422ee5d89f2 (patch)
treebc5926c033789196097daf06bf0525967b8ab1d5
parentf60edd672550c8dc45234266a5a22bb04f7b7674 (diff)
downloadcrawlbot-4ccef75442e9b56054b2c7929542e422ee5d89f2.tar.gz
crawlbot-4ccef75442e9b56054b2c7929542e422ee5d89f2.zip
better error handling
-rw-r--r--lib/Crawl/Bot/Plugin/Wiki.pm10
-rw-r--r--lib/Crawl/Bot/Role/RSS.pm4
2 files changed, 9 insertions, 5 deletions
diff --git a/lib/Crawl/Bot/Plugin/Wiki.pm b/lib/Crawl/Bot/Plugin/Wiki.pm
index 44765d5..66394c2 100644
--- a/lib/Crawl/Bot/Plugin/Wiki.pm
+++ b/lib/Crawl/Bot/Plugin/Wiki.pm
@@ -3,6 +3,7 @@ use Moose;
extends 'Crawl::Bot::Plugin';
use XML::RPC;
+use Try::Tiny;
has xmlrpc_location => (
is => 'ro',
@@ -31,16 +32,17 @@ sub tick {
my $xmlrpc = XML::RPC->new($self->xmlrpc_location);
warn "Getting recent wiki changes...";
- my $changes = $xmlrpc->call('wiki.getRecentChanges', $last_checked);
+ my $changes = try { $xmlrpc->call('wiki.getRecentChanges', $last_checked) } catch { warn $_ };
# ->call returns a hashref with error info on failure
return unless ref($changes) eq 'ARRAY';
for my $change (@$changes) {
warn "Page $change->{name} changed";
- my $history = $xmlrpc->call('wiki.getPageVersions', $change->{name}, 0);
- next if @$history;
+ my $history = try { $xmlrpc->call('wiki.getPageVersions', $change->{name}, 0) } catch { warn $_ };
+ next if !defined($history) || @$history;
warn "Page $change->{name} is new!";
my $name = $change->{name};
- my $page = $xmlrpc->call('wiki.getPage', $change->{name});
+ my $page = try { $xmlrpc->call('wiki.getPage', $change->{name}) } catch { warn $_ };
+ next unless $page;
if ($page =~ /(===?=?=?=?) (.*) \1/) {
$name = $2;
}
diff --git a/lib/Crawl/Bot/Role/RSS.pm b/lib/Crawl/Bot/Role/RSS.pm
index 8576a82..7a0177e 100644
--- a/lib/Crawl/Bot/Role/RSS.pm
+++ b/lib/Crawl/Bot/Role/RSS.pm
@@ -2,6 +2,7 @@ package Crawl::Bot::Role::RSS;
use Moose::Role;
use XML::RAI;
+use Try::Tiny;
with 'Crawl::Bot::Role::CachedItems';
@@ -9,7 +10,8 @@ requires 'rss_feed';
sub current_items {
my $self = shift;
- my $rss = XML::RAI->parse_uri($self->rss_feed);
+ my $rss = try { XML::RAI->parse_uri($self->rss_feed) } catch { warn $_ };
+ return unless ref($rss) eq 'ARRAY';
# after the XML::RAI object goes out of scope, the item objects become
# worthless. how dumb. capture the relevant data in some hashrefs instead.
return map {