ASNMTAP

 view release on metacpan or  search on metacpan

lib/ASNMTAP/Asnmtap/Plugins/SOAP.pod  view on Meta::CPAN


ASNMTAP::Asnmtap::Plugins::SOAP is a Perl module that provides SOAP functions used by ASNMTAP-based plugins.

=head1 SYNOPSIS

 use ASNMTAP::Asnmtap::Plugins v3.002.003;
 use ASNMTAP::Asnmtap::Plugins qw(:PLUGINS);

 my $objectPlugins = ASNMTAP::Asnmtap::Plugins->new (
   _programName        => 'check_template-SOAP.pl',
   _programDescription => "SOAP::LITE plugin template for testing the '$APPLICATION' with Performance Data",
   _programVersion     => '3.002.003',
   _programGetOptions  => ['proxy:s', 'trendline|T:i'],
   _timeout            => 30,
   _debug              => 0);

 use ASNMTAP::Asnmtap::Plugins::SOAP qw(&get_soap_request);

 use SOAP::Lite;
 my $proxy      = 'http://services.soaplite.com/hibye.cgi';
 my $namespace  = 'http://www.soaplite.com/Demo';
 my $methodName = 'hi';
 my $method     = SOAP::Data->name($methodName)->attr( {xmlns => $namespace} );

 my %soapService_Register_NS = (
   'http://schemas.xmlsoap.org/wsdl/mime/' => 'mime',
   'http://www.w3.org/2001/XMLSchema'      => 's'
 );

 my $xmlContent;
 my $params;

 my ($returnCode, $xml) = get_soap_request ( 
   asnmtapInherited  => \$objectPlugins,
   proxy             => $proxy,
   namespace         => $namespace,
   method            => $method,
   registerNamespace => \%soapService_Register_NS,
   xmlContent        => $xmlContent,
   params            => $params,
   readable          => 1,
   cookies           => 1,
   perfdataLabel     => 'SOAP'
 );

 ($returnCode, $xml) = get_soap_request ( 
   asnmtapInherited  => \$objectPlugins,
   proxy             => 'https://USERNAME:PASSWORD@secure.citap.be/authorization/hibye.cgi',
   namespace         => $namespace,
   method            => $method,
   registerNamespace => \%soapService_Register_NS,
   xmlContent        => $xmlContent,
   params            => $params,
   cookies           => 1,
   perfdataLabel     => 'SOAP with Basic Authentication'
 );

 ($returnCode, $xml) = get_soap_request ( 
   asnmtapInherited  => \$objectPlugins,
   proxy             => 'https://secure.citap.be/authorization/hibye.cgi',
   credentials       => [ 'secure.citap.be:443', "ASNMTAP's Authorization Access", 'USERNAME' => 'PASSWORD' ],
   namespace         => $namespace,
   method            => $method,
   registerNamespace => \%soapService_Register_NS,
   xmlContent        => $xmlContent,
   params            => $params,
   cookies           => 1,
   perfdataLabel     => 'SOAP with Credentials'
 );

 unless ( $returnCode ) {
   if (defined $xml) {
     ...
   } else {
     ...
   }
 }

 $objectPlugins->exit (7);

=head1 Description

=head2 SOAP::Lite based functions.

SOAP::Lite for Perl is a collection of Perl modules which provides a simple and 
lightweight interface to the Simple Object Access Protocol (SOAP, also known as 
Service Oriented Access Protocol) both on client and server side.

=over 4

=item get_soap_request()

SOAP is a simple XML-based protocol to let applications exchange information over HTTP.

More information regarding SOAP can be find at URI: http://www.w3schools.com/soap/

Returns a status for $returnCode (OK..UNKNOWN) and when the status is OK for $xml the extracted XML if exists, otherwise undef.

=over 4

=item asnmtapInherited

A required reference to an ASNMTAP::Asnmtap::Plugins or ASNMTAP::Asnmtap::Plugins::Nagios subclass

Through this way of working we inherited the command line option I<--debug>.

=item custom

optional, is an reference to your own custom defined function

$som: the SOM object provides a simple API for accessing any aspect of
the response's SOAP envelope, a result object from SOAP::Lite.

 sub actionOnSoapResponse {
   my ($asnmtapInherited, $som) = @_;
   return ($returnCode);
 }

and now with customArguments:

 sub actionOnSoapResponse {
   my ($asnmtapInherited, $som, $arguments) = @_;
   return ($returnCode);
 }

=item customArguments

optional, when you need to pass parameters to your own custom defined function, this can be done with customArguments.

 customArguments: SCALAR, ARRAY, HASH,
                  REF SCALAR, REF ARRAY, REF HASH

=item proxy

This lets you specify an endpoint (service address) and also loads the required module at the same time.

 proxy: 'http://services.soaplite.com/hibye.cgi'

When using SOAP with basic authentication you can add username and password to your URL as follows:

 proxy: 'http://USERNAME:PASSWORD@services.soaplite.com/hibye.cgi'

a required scalar.

=item credentials

Set the user name and password to be used for a realm.

 credentials: [ $hostname_port, $realm, $username, $password ]

              [ 'secure.citap.be:443', "ASNMTAP's Authorization Access", 'USERNAME' => 'PASSWORD' ]

a optional array.

=item namespace

Sets the URI that will be used as the namespace for the resulting XML entity.

 namespace: 'http://www.soaplite.com/Demo'

a required scalar.

=item registerNamespace

The register_ns subroutine allows users to register a global namespace with the SOAP Envelope.

 registerNamespace:

 %soapService_Register_NS = (
  'http://schemas.xmlsoap.org/wsdl/mime/' => 'mime',
   'http://www.w3.org/2001/XMLSchema'      => 's'
 );

a required hash.

=item method

The name is what the serializer will use for the tag when generating the XML for this object.

 method: SOAP::Data->name(hi)->attr( {xmlns => 'http://www.soaplite.com/Demo'} );

a required SOAP::Data->name definition

=item soapaction

This lets you specify a handler for on_action event. It is triggered when creating SOAPAction. 
The default handler will set SOAPAction to "uri/method". 
You can change this behavior, for a particular object to "uri/soapaction".
To remove the soapaction you say soapaction => '',

optional scalar, soapaction

=item xmlContent

Parsing XML formatted data.

 xmlContent:
 
 <soapRequest>
   <registrationType>xmlRegistrationType</registrationType>
   <language>xmlLanguage</language>
   <orderBy>xmlOrderBy</orderBy>
 </soapRequest>

optional scalar, xmlContent is one XML

=item params

 params: SOAP::Data->name('req')->type('string')->value(xmlContent);



( run in 1.069 second using v1.01-cache-2.11-cpan-39bf76dae61 )