1 package Net::Plesk::Response;
6 use XML::XPath::XMLParser;
10 Net::Plesk::Response - Plesk response object
14 my $response = $plesk->some_method( $and, $args );
16 if ( $response->is_success ) {
18 my $id = $response->id;
23 my $error = $response->error; #error code
24 my $errortext = $response->errortext; #error message
30 The "Net::Plesk::Response" class represents Plesk responses.
36 my $class = ref($proto) || $proto;
40 my $encoding = ''; #default
42 if ($data =~ /^\<\?xml version=\"1.0\"(\s+encoding="([\w\-]*)")?\?\>(.*)$/s){
43 $encoding = $2; #don't actually do anything with this yet
46 $data =~ s/[^\w\s]/ /g; # yes, we lose stuff
47 $data = '<?xml version="1.0"?>' .
48 '<packet version="' . $self->{'version'} . '">' .
49 "<system><status>error</status><errcode>500</errcode>" .
50 "<errtext>Malformed Plesk response:" . $data . "</errtext>".
54 my $xp = XML::XPath->new(xml => $data);
55 my $nodeset = $xp->find('//result');
56 foreach my $node ($nodeset->get_nodelist) {
57 push @{$self->{'results'}}, XML::XPath::XMLParser::as_string($node);
59 $nodeset = $xp->find('//system');
60 foreach my $node ($nodeset->get_nodelist) {
61 my $parsed = XML::XPath::XMLParser::as_string($node);
62 $parsed =~ s/\<(\/?)system\>/<$1result>/ig;
63 push @{$self->{'results'}}, $parsed;
72 foreach my $result (@{$self->{'results'}}) {
73 $status = (XMLin($result)->{'status'} eq 'ok');
82 foreach my $result (@{$self->{'results'}}) {
83 my $errcode = XMLin($result)->{'errcode'};
84 push @errcode, $errcode if $errcode;
86 return wantarray ? @errcode : $errcode[0];
92 foreach my $result (@{$self->{'results'}}) {
93 my $errtext = XMLin($result)->{'errtext'};
94 push @errtext, $errtext if $errtext;
96 return wantarray ? @errtext : $errtext[0];
102 foreach my $result (@{$self->{'results'}}) {
103 my $id = XMLin($result)->{'id'};
104 push @id, $id if $id;
106 return wantarray ? @id : $id[0];
112 Needs better documentation.
120 Jeff Finucane E<lt>jeff@cmh.netE<gt>
122 =head1 COPYRIGHT AND LICENSE
124 Copyright (C) 2006 Jeff Finucane
126 This library is free software; you can redistribute it and/or modify
127 it under the same terms as Perl itself.