r1 - 19 Oct 2007 - 23:18:03 - BrettWooldridgeYou are here: TWiki >  Developer Web  > HowtoUseSoap

HOWTO Call the Server Using SOAP::Lite

#!/usr/bin/perl

######################################################
#              package DeviceService                 #
######################################################

package DeviceService;
use strict;
use Defaults;

my $server   = $Defaults::SERVER;
my $username = $Defaults::USERNAME;
my $password = $Defaults::PASSWORD;
my $timeout  = $Defaults::TIMEOUT;
my $ns1      = $Defaults::NS1;
my $DEFAULT  = $Defaults::NETWORK;
my $PROXY    = "https://$server:8080/server/devices";
my $NAMESPACE = 'http://www.ziptie.org/server/devices';

my $METHOD;
my @parms = ();

use SOAP::Lite
       on_fault => sub {
	   my($soap, $res) = @_;
           die ref $res ? $res->faultdetail : $soap->transport->status, "\n";
};
sub SOAP::Transport::HTTP::Client::get_basic_credentials { return $username=> $password; }

sub setServerParms
{
   if  ( $_[0] ) {
      $server  =  $_[0];
      $PROXY   = "https://$server:8080/server/devices";
  }
  $username = $_[1] if $_[1];
  $password = $_[2] if $_[2];
  return $server;
}

######################################################
#              createDevice Method                   #
######################################################

sub createDevice {
  my $URI      = "createDevice";
  my ($ip, $mn, $ad) = @_;
  @parms = (
                  SOAP::Data->name('ipAddress')->value($ip),
                  SOAP::Data->name('managedNetwork')->value($mn),
                  SOAP::Data->name('adapterId')->value($ad)
           );

  $METHOD =  'createDevice(@parms)'; # Method we are trying to exercise
  my %can;
  my $soap = new SOAP::Lite -> uri($URI) -> proxy($PROXY, timeout => $timeout);

  $soap->ns($NAMESPACE,$ns1);

  $can{$METHOD} = $soap->can($METHOD) unless exists $can{$METHOD};
  my $res = eval "\$soap->$METHOD; ";
  $@                                                      ? return(join "\n", "--- SYNTAX ERROR ---",    $@, '') :
  $can{$METHOD} && !UNIVERSAL::isa($res => 'SOAP::SOM')   ? return(join "\n", "--- METHOD RESULT ---",   $res || '', '') :
  defined($res) && $res->fault                            ? return(join "\n", "--- SOAP FAULT ---",      $res->faultcode, $res->faultstring, '') :
  !$soap->transport->is_success                           ? return(join "\n", "--- TRANSPORT ERROR ---", $soap->transport->status, '') :
                                                            return ($res->paramsall);
#  return performOP($URI, $PROXY, $NAMESPACE, $METHOD);
}
######################################################
#              deleteDevice Method                   #
######################################################

sub deleteDevice
{
  my $URI      = "deleteDevice";
  my ($ip, $mn) = @_;
  @parms = (
              SOAP::Data->name('ipAddress')->value($ip),
              SOAP::Data->name('managedNetwork')->value($mn)
           );
  my $METHOD = 'deleteDevice(@parms)';
  my %can;
  my $soap = new SOAP::Lite -> uri($URI) -> proxy($PROXY, timeout => $timeout);
  $soap->ns($NAMESPACE,$ns1);
  $can{$METHOD} = $soap->can($METHOD) unless exists $can{$METHOD};
  my $res = eval "\$soap->$METHOD; ";
  $@                                                      ? return(join "\n", "--- SYNTAX ERROR ---", $@, '') :
  $can{$METHOD} && !UNIVERSAL::isa($res => 'SOAP::SOM')   ? return(join "\n", "--- METHOD RESULT ---", $res || '', '') :
  defined($res) && $res->fault                            ? return(join "\n", "--- SOAP FAULT ---", $res->faultcode, $res->faultstring, '') :
  !$soap->transport->is_success                           ? return(join "\n", "--- TRANSPORT ERROR ---", $soap->transport->status, '') :
                                                            return ($res->paramsall);
                                                            
}

######################################################
#              getDevice Method                      #
######################################################

sub getDevice
{
  my $URI      = "getDevice";
  my ($ip, $mn) = @_;
  if ($mn)
  {
    @parms = (
              SOAP::Data->name('ipAddress')->value($ip),
              SOAP::Data->name('managedNetwork')->value($mn)
             );
  } else
  {
     @parms = ( SOAP::Data->name('ipAddress')->value($ip) );
  }

  my $METHOD =  'getDevice(@parms)';
  my %can;
  my $soap = new SOAP::Lite -> uri($URI) -> proxy($PROXY, timeout => $timeout);
  $soap->ns($NAMESPACE,$ns1);
  $can{$METHOD} = $soap->can($METHOD) unless exists $can{$METHOD};
  my $res = eval "\$soap->$METHOD; ";
  $@                                                      ? return(join "\n", "--- SYNTAX ERROR ---", $@, '') :
  $can{$METHOD} && !UNIVERSAL::isa($res => 'SOAP::SOM')   ? return(join "\n", "--- METHOD RESULT ---", $res || '', '') :
  defined($res) && $res->fault                            ? return(join "\n", "--- SOAP FAULT ---", $res->faultcode, $res->faultstring, '') :
  !$soap->transport->is_success                           ? return(join "\n", "--- TRANSPORT ERROR ---", $soap->transport->status, '') :
                                                            return ($res->paramsall);
}

######################################################
#              createDeviceBatched                   #
######################################################

sub createDeviceBatched
{
  my $URI      = "createDeviceBatched";
  my @deviceList = @_;

  @parms = ();
  for (my $i = 0; $i < scalar (@deviceList); $i++)
  {
     my ($ad, $hn, $ip, $mn) = split (/,/, $deviceList[$i]);
     my $device =  SOAP::Data->name("devices"=>
                        \SOAP::Data->value(SOAP::Data->name("adapterId" => $ad),
                                   SOAP::Data->name("hostname"       => $hn),
                                   SOAP::Data->name("ipAddress"      => $ip),
                                   SOAP::Data->name("managedNetwork" => $mn)));
     push (@parms, $device);
  }
  my $METHOD =  'createDeviceBatched(@parms)';
  my %can;
  my $soap = new SOAP::Lite -> uri($URI) -> proxy($PROXY, timeout => $timeout);

  $soap->ns($NAMESPACE,$ns1);
  $can{$METHOD} = $soap->can($METHOD) unless exists $can{$METHOD};
  my $res = eval "\$soap->$METHOD; ";
  $@                                                      ? return(join "\n", "--- SYNTAX ERROR ---",    $@, '') :
  $can{$METHOD} && !UNIVERSAL::isa($res => 'SOAP::SOM')   ? return(join "\n", "--- METHOD RESULT ---",   $res || '', '') :
  defined($res) && $res->fault                            ? return(join "\n", "--- SOAP FAULT ---",      $res->faultcode, $res->faultstring, '') :
  !$soap->transport->is_success                           ? return(join "\n", "--- TRANSPORT ERROR ---", $soap->transport->status, '') :
                                                            return ($res->paramsall);
}


######################################################
#              getDeviceLites method                 #
######################################################

sub getDeviceLites
{
   my $URI = "getDeviceLites";
   my @list = @_;
   @parms = ();
   # print Dumper (@parms);
   for (my $i = 0; $i < scalar (@list); $i++)
   {
      my $device = SOAP::Data->name("devices"=> SOAP::Data->value($list[$i]));
      push (@parms, $device);
   }
  $METHOD =  'getDeviceLites(@parms)';
   my %can;
   my $soap = new SOAP::Lite -> uri($URI) -> proxy($PROXY, timeout => $timeout);

   $soap->ns($NAMESPACE,$ns1);
   $can{$METHOD} = $soap->can($METHOD) unless exists $can{$METHOD};
   my $res = eval "\$soap->$METHOD; ";
   $@                                                      ? return(join "\n", "--- SYNTAX ERROR ---",    $@, '') :
   $can{$METHOD} && !UNIVERSAL::isa($res => 'SOAP::SOM')   ? retrun(join "\n", "--- METHOD RESULT ---",   $res || '', '') :
   defined($res) && $res->fault                            ? return(join "\n", "--- SOAP FAULT ---",      $res->faultcode, $res->faultstring, '') :
   !$soap->transport->is_success                           ? return(join "\n", "--- TRANSPORT ERROR ---", $soap->transport->status, '') :
                                                             return ($res->paramsall);
}


sub getAllHardwareVendors

{
  my $URI = "getAllHardwareVendors";
  my $METHOD = "getAllHardwareVendors";
  my %can;
  my $soap = new SOAP::Lite -> uri($URI) -> proxy($PROXY, timeout => $timeout);

  $soap->ns($NAMESPACE,$ns1);
  $can{$METHOD} = $soap->can($METHOD) unless exists $can{$METHOD};
  my $res = eval "\$soap->$METHOD; ";
  $@                                                      ? return(join "\n", "--- SYNTAX ERROR ---",    $@, '') :
  $can{$METHOD} && !UNIVERSAL::isa($res => 'SOAP::SOM')   ? retrun(join "\n", "--- METHOD RESULT ---",   $res || '', '') :
  defined($res) && $res->fault                            ? return(join "\n", "--- SOAP FAULT ---",      $res->faultcode, $res->faultstring, '') :
  !$soap->transport->is_success                           ? return(join "\n", "--- TRANSPORT ERROR ---", $soap->transport->status, '') :
                                                            return ($res->paramsall);
}

sub updateDevice
{
   my ($URI, $METHOD);
  $URI = "updateDevice";
   
    my ($ip, $mn, $newAd, $hn, $newIp, $newMn) = @_;
   # per brett only $mn and $newMn are optional

   $mn = $DEFAULT if (!$mn);
   $newMn = $DEFAULT if (!$newMn);

   my $dObj = getDevice($ip, $mn);

   die "Device does not exist " if ref $dObj ne "HASH";

   $hn    = $dObj->{'hostname'}       if  (! $hn);
   $newIp = $dObj->{'ipAddress'}      if (! $newIp);
   $newAd = $dObj->{'adapterId'}      if (! $newAd);
   $newMn = $dObj->{'managedNetwork'} if (! $newMn);

   
   my @parms = ();
   @parms = (
              SOAP::Data->name('ipAddress')->value($ip),
              SOAP::Data->name('managedNetwork')->value($mn),
              SOAP::Data->name("device"=>
                        \SOAP::Data->value(SOAP::Data->name("adapterId" => $newAd),
                                   SOAP::Data->name("hostname"          => $hn),
                                   SOAP::Data->name("ipAddress"         => $newIp),
                                   SOAP::Data->name("managedNetwork"    => $newMn)))
           );

    $METHOD =  'updateDevice(@parms)';
    my %can;
    my $soap = new SOAP::Lite -> uri($URI) -> proxy($PROXY, timeout => $timeout);

    $soap->ns($NAMESPACE,$ns1);
    $can{$METHOD} = $soap->can($METHOD) unless exists $can{$METHOD};
    my $res = eval "\$soap->$METHOD; ";
    $@                                                      ? return(join "\n", "--- SYNTAX ERROR ---",    $@, '') :
    $can{$METHOD} && !UNIVERSAL::isa($res => 'SOAP::SOM')   ? return(join "\n", "--- METHOD RESULT ---",   $res || '', '') :
    defined($res) && $res->fault                            ? return(join "\n", "--- SOAP FAULT ---",      $res->faultcode, $res->faultstring, '') :
    !$soap->transport->is_success                           ? return(join "\n", "--- TRANSPORT ERROR ---", $soap->transport->status, '') :
                                                              return ($res->paramsall);
}
Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r1 | More topic actions
 
Powered by TWiki
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback