summaryrefslogtreecommitdiff
path: root/lib/Net/Plesk/Response.pm
diff options
context:
space:
mode:
authorjeff <jeff>2006-10-14 21:13:30 +0000
committerjeff <jeff>2006-10-14 21:13:30 +0000
commit3e8bc1837343e34bac7106be458add3982fb77da (patch)
tree3065e099ce9da405ff6584dc180e0f0d824df94a /lib/Net/Plesk/Response.pm
Initial importstart
Diffstat (limited to 'lib/Net/Plesk/Response.pm')
-rw-r--r--lib/Net/Plesk/Response.pm114
1 files changed, 114 insertions, 0 deletions
diff --git a/lib/Net/Plesk/Response.pm b/lib/Net/Plesk/Response.pm
new file mode 100644
index 0000000..58203f7
--- /dev/null
+++ b/lib/Net/Plesk/Response.pm
@@ -0,0 +1,114 @@
+package Net::Plesk::Response;
+
+use strict;
+use XML::Simple;
+use XML::XPath;
+use XML::XPath::XMLParser;
+
+=head1 NAME
+
+Net::Plesk::Response - Plesk response object
+
+=head1 SYNOPSIS
+
+ my $response = $plesk->some_method( $and, $args );
+
+ if ( $response->is_success ) {
+
+ my $id = $response->id;
+ #...
+
+ } else {
+
+ my $error = $response->error; #error code
+ my $errortext = $response->errortext; #error message
+ #...
+ }
+
+=head1 DESCRIPTION
+
+The "Net::Plesk::Response" class represents Plesk responses.
+
+=cut
+
+sub new {
+ my $proto = shift;
+ my $class = ref($proto) || $proto;
+ my $self = {};
+ bless($self, $class);
+
+ my $data = shift;
+ $data =~ /^\<\?xml version=\"1.0\"\?\>(.*)$/s;
+
+ my $xp = XML::XPath->new(xml => $1);
+ my $nodeset = $xp->find('//result');
+ foreach my $node ($nodeset->get_nodelist) {
+ push @{$self->{'results'}}, XML::XPath::XMLParser::as_string($node);
+ }
+
+ $self;
+}
+
+sub is_success {
+ my $self = shift;
+ my $status = 1;
+ foreach my $result (@{$self->{'results'}}) {
+ $status = (XMLin($result)->{'status'} eq 'ok');
+ last unless $status;
+ }
+ $status;
+}
+
+sub error {
+ my $self = shift;
+ my @errcode;
+ foreach my $result (@{$self->{'results'}}) {
+ my $errcode = XMLin($result)->{'errcode'};
+ push @errcode, $errcode if $errcode;
+ }
+ return wantarray ? @errcode : $errcode[0];
+}
+
+sub errortext {
+ my $self = shift;
+ my @errtext;
+ foreach my $result (@{$self->{'results'}}) {
+ my $errtext = XMLin($result)->{'errtext'};
+ push @errtext, $errtext if $errtext;
+ }
+ return wantarray ? @errtext : $errtext[0];
+}
+
+sub id {
+ my $self = shift;
+ my @id;
+ foreach my $result (@{$self->{'results'}}) {
+ my $id = XMLin($result)->{'id'};
+ push @id, $id if $id;
+ }
+ return wantarray ? @id : $id[0];
+}
+
+
+=head1 BUGS
+
+Needs better documentation.
+
+=head1 SEE ALSO
+
+L<Net::Plesk>,
+
+=head1 AUTHOR
+
+Jeff Finucane E<lt>jeff@cmh.netE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright (C) 2006 Jeff Finucane
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut
+
+1;