diff options
author | jeff <jeff> | 2006-10-19 04:44:35 +0000 |
---|---|---|
committer | jeff <jeff> | 2006-10-19 04:44:35 +0000 |
commit | 69bf46aa820bb3378944e0646398c4f093234783 (patch) | |
tree | 7c2061b91307f86e479c4e6f7b3de895e7b32715 | |
parent | 3e8bc1837343e34bac7106be458add3982fb77da (diff) |
better error management
-rw-r--r-- | lib/Net/Plesk.pm | 8 | ||||
-rw-r--r-- | 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 ( + '<?xml version="1.0" encoding="UTF-8"?>'. #a lie? probably safe + '<packet version="' . $self->{'version'} . '">' . + "<system><status>error</status><errcode>500</errcode>" . + "<errtext>" . $res->status_line . "</errtext></system>" . + "</packet>" + ); } } 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 = '<?xml version="1.0"?>' . + '<packet version="' . $self->{'version'} . '">' . + "<system><status>error</status><errcode>500</errcode>" . + "<errtext>Malformed Plesk response:" . $data . "</errtext>". + "</system></packet>"; + } + + 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; } |