logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

XML::Compile::SOAP::Server - server-side SOAP message processing

Description

       This class defines methods that each server for the SOAP message exchange protocols must implement.

Inheritance

        XML::Compile::SOAP::Server is extended by
          XML::Compile::SOAP11::Server
          XML::Compile::SOAP12::Server

License

       Copyrights 2007-2022 by [Mark Overmeer <markov@cpan.org>]. For other contributors see ChangeLog.

       This program is free software; you can redistribute it and/or modify it under  the  same  terms  as  Perl
       itself.  See http://dev.perl.org/licenses/

perl v5.34.0                                       2022-08-04                    XML::Compile::SOAP::Server(3pm)

Methods

Instantiation
       This object can not be instantiated, but is only used as secundary base class.  The primary must contain
       the "new".

       XML::Compile::SOAP::Server->new(%options)
            -Option--Default
             role    'NEXT'

           role => URI
             In  SOAP1.1,  the term is 'actor', but SOAP1.2 has renamed this into 'role': the role [this daemon]
             plays in the transport protocol.

             Please use the role abbreviations as provided by the protocol implementations when  possible:  they
             will  be translated into the right URI on time.  See XML::Compile::SOAP::roleAbbreviation() and the
             constants defined in XML::Compile::SOAP::Util

   Accessors
       $obj->role()
           Returns the URI of the role (actor) of this server.

   Actions
       $obj->compileFilter(%options)
           This routine returns a CODE reference which can be used for compileHandler(selector); so see  whether
           a  certain  message  has  arrived.  On the moment, only the first "body" element is used to determine
           that.

            -Option--Default
             body    []
             fault   <undef>
             header  <undef>
             style   'document'

           body => ARRAY-of-TYPES
           fault => ARRAY-of-TYPES
           header => ARRAY-of-TYPES
           style => 'rpc'|'document'
       $obj->compileHandler(%options)
           Returns an HTTP status code and an XML::LibXML::Document pair.

            -Option  --Default
             callback  <fault: not implemented>
             decode    <undef>
             encode    <undef>
             name      <required>
             selector  sub {0}

           callback => CODE
             As input, the SERVER object and the translated input message (Perl  version)  are  passed  in.   As
             output,  a  suitable  output  structure must be produced.  If the callback is not set, then a fault
             message will be returned to the user.

           decode => CODE
             The CODE reference is used to decode the (parsed) XML input message into  the  pure  Perl  request.
             The  reference  is  a READER, created with XML::Compile::Schema::compile().  If no input decoder is
             specified, then the callback handler will be called with the un-decoded XML::LibXML::Document node.

           encode => CODE
             The CODE reference is used to encode the Perl  answer  structure  into  the  output  message.   The
             reference  is  a  WRITER.   created  with XML::Compile::Schema::compile().  If no output encoder is
             specified, then the callback must return an XML::LibXML::Document, or only produce error messages.

           name => STRING
             The identification for this action, for instance used for logging.  When the action is created  via
             a WSDL, the portname will be used here.

             It  is  a  pity  that  the portname is not passed in the SOAP message, because it is not so easy to
             detect which handler must be called.

           selector => CODE
             One way or the other, you have to figure-out whether a message addresses  a  certain  process.  The
             callback will only be used if the CODE reference specified here returns a true value.

             The  CODE  reference  will be called with the XML version of the message, and a HASH which contains
             the information about  the  XML  collected  with  XML::Compile::SOAP::messageStructure()  plus  the
             "soap_version" entry.

       XML::Compile::SOAP::Server->faultWriter()
           Returns a CODE reference which can be used to produce faults.

Name

       XML::Compile::SOAP::Server - server-side SOAP message processing

See Also

       This  module  is  part  of XML-Compile-SOAP distribution version 3.28, built on August 01, 2022. Website:
       http://perl.overmeer.net/CPAN/

Synopsis

         # used by distribution XML::Compile::SOAP::Daemon

         my $soap   = XML::Compile::SOAP11::Server->new;
         my $input  = $soap->compileMessage('RECEIVER', ...);
         my $output = $soap->compileMessage('SENDER', ...);

         $soap->compileHandler
           ( name => $name, input => $input, output => $output
           , callback => \$my_handler
           );

         my $daemon = XML::Compile::SOAP::HTTPDaemon->new(...);
         $daemon->addHandler($type => $daemon);

See Also