From 69bf46aa820bb3378944e0646398c4f093234783 Mon Sep 17 00:00:00 2001 From: jeff Date: Thu, 19 Oct 2006 04:44:35 +0000 Subject: [PATCH] better error management --- lib/Net/Plesk.pm | 8 +++++++- lib/Net/Plesk/Response.pm | 21 ++++++++++++++++++--- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/lib/Net/Plesk.pm b/lib/Net/Plesk.pm index 2b33c51..3e78963 100644 --- a/lib/Net/Plesk.pm +++ b/lib/Net/Plesk.pm @@ -214,7 +214,13 @@ sub AUTOLOAD { $response; } else { - die $res->status_line, "\n"; + new Net::Plesk::Response ( + ''. #a lie? probably safe + '' . + "error500" . + "" . $res->status_line . "" . + "" + ); } } diff --git a/lib/Net/Plesk/Response.pm b/lib/Net/Plesk/Response.pm index 58203f7..53342d5 100644 --- a/lib/Net/Plesk/Response.pm +++ b/lib/Net/Plesk/Response.pm @@ -38,13 +38,28 @@ sub new { bless($self, $class); my $data = shift; - $data =~ /^\<\?xml version=\"1.0\"\?\>(.*)$/s; - - my $xp = XML::XPath->new(xml => $1); + if ($data =~ /^\<\?xml version=\"1.0\"\?\>(.*)$/s){ + $data=$1; + }else{ + $data =~ s/[^\w\s]/ /g; # yes, we lose stuff + $data = '' . + '' . + "error500" . + "Malformed Plesk response:" . $data . "". + ""; + } + + my $xp = XML::XPath->new(xml => $data); my $nodeset = $xp->find('//result'); foreach my $node ($nodeset->get_nodelist) { push @{$self->{'results'}}, XML::XPath::XMLParser::as_string($node); } + $nodeset = $xp->find('//system'); + foreach my $node ($nodeset->get_nodelist) { + my $parsed = XML::XPath::XMLParser::as_string($node); + $parsed =~ s/\<(\/?)system\>/<$1result>/ig; + push @{$self->{'results'}}, $parsed; + } $self; } -- 2.20.1