From: <de...@de...> - 2006-05-29 19:27:21
|
Author: MichaelDaum Date: 2006-05-29 07:54:47 -0500 (Mon, 29 May 2006) New Revision: 10380 Modified: twiki/branches/DEVELOP/twikiplugins/XmlRpcContrib/bin/xmlrpc twiki/branches/DEVELOP/twikiplugins/XmlRpcContrib/data/TWiki/XmlRpcContrib.txt twiki/branches/DEVELOP/twikiplugins/XmlRpcContrib/lib/TWiki/Contrib/XmlRpcContrib.pm twiki/branches/DEVELOP/twikiplugins/XmlRpcContrib/lib/TWiki/Contrib/XmlRpcContrib/Server.pm Log: Item2376: api cleanup * fixed error in callProcedure generating an error response * renamed callProcedure -> dispatch * renamed registerXMLHandler -> registerRPCHandler * fixed conformance of error handling Modified: twiki/branches/DEVELOP/twikiplugins/XmlRpcContrib/bin/xmlrpc =================================================================== --- twiki/branches/DEVELOP/twikiplugins/XmlRpcContrib/bin/xmlrpc 2006-05-29 12:54:04 UTC (rev 10379) +++ twiki/branches/DEVELOP/twikiplugins/XmlRpcContrib/bin/xmlrpc 2006-05-29 12:54:47 UTC (rev 10380) @@ -31,7 +31,7 @@ use TWiki::Contrib::XmlRpcContrib; use TWiki::UI::View; -TWiki::UI::run(\&TWiki::Contrib::XmlRpcContrib::callProcedure); +TWiki::UI::run(\&TWiki::Contrib::XmlRpcContrib::dispatch); 1; Modified: twiki/branches/DEVELOP/twikiplugins/XmlRpcContrib/data/TWiki/XmlRpcContrib.txt =================================================================== --- twiki/branches/DEVELOP/twikiplugins/XmlRpcContrib/data/TWiki/XmlRpcContrib.txt 2006-05-29 12:54:04 UTC (rev 10379) +++ twiki/branches/DEVELOP/twikiplugins/XmlRpcContrib/data/TWiki/XmlRpcContrib.txt 2006-05-29 12:54:47 UTC (rev 10380) @@ -9,14 +9,14 @@ are registered to the TWiki engine. The xmlrpc cgi will then call them on request. ---++ =XmlRpcContrib= ----+++ =registerXMLHandler($name, $impl)= +---+++ =registerRPCHandler($name, $impl)= register an implementation for a handler *Parameters*: %BR% * $name: symbolic method name * $impl: implementation of a handler for the given method name ----+++ =callProcedure($session, $data)= +---+++ =dispatch($session, $data)= process a remote procedure call *Parameters*: %BR% @@ -27,7 +27,7 @@ During execution the context =xmlrpc= is entered as well as the context of the symbolic method name. -This call will be delegate to =XmlRpcContrib::Server::callProcedure= and print +This call will be delegate to =XmlRpcContrib::Server::dispatch= and print out its result to STDOUT. ---++ =XmlRpcContrib::Server= @@ -41,7 +41,7 @@ The server is a singleton object in the =XmlRpcContrib= namespace. ----+++ =callProcedure($session, $data)= +---+++ =dispatch($session, $data)= carry out the procedure call *Parameters*: %BR% @@ -52,7 +52,7 @@ an error if not available. A method must implement the interface <verbatim> -($status, $error, $result) = handleXMLCall($session, $requestargs) +($status, $error, $result) = handleRPCCall($session, $requestargs) </verbatim> where: @@ -61,15 +61,14 @@ The handler must return an array ($status, $error, $result) where * $status: string representation of the status - * $error: xml rpc error code + * $error: error code * $result: the procedure's result data -Values for $error indicate - * < 0: a server error, see XML-RPC specs - * 0: the $result is ok and a valid xml response - * 1: the $result is ok, a flat string and will be converted into an RPC::XML string +If $error is null, a response is created using $result if it is +an RPC::XML object already, or create an RPC::XML::string from it. +If $error is a non-null value a server error occured and an RPC::XML::fault +object is respondend (see =getError()=). - ---+++ =getResponse($status, $data)= create a well-formated =RPC::XML::response= that can be printed to STDOUT on completion @@ -105,7 +104,7 @@ | Copyright ©: | 2006, MichaelDaum@WikiRing.com | | License: | GPL ([[http://www.gnu.org/copyleft/gpl.html][GNU General Public License]]) | | CPAN Dependencies: | CPAN:RPC::XML | -| Version: | v0.01 | +| Version: | v0.02 | | Change History: | | | 28 May 2006: | Initial version | | Home: | TWiki:Plugins/%TOPIC% | Modified: twiki/branches/DEVELOP/twikiplugins/XmlRpcContrib/lib/TWiki/Contrib/XmlRpcContrib/Server.pm =================================================================== --- twiki/branches/DEVELOP/twikiplugins/XmlRpcContrib/lib/TWiki/Contrib/XmlRpcContrib/Server.pm 2006-05-29 12:54:04 UTC (rev 10379) +++ twiki/branches/DEVELOP/twikiplugins/XmlRpcContrib/lib/TWiki/Contrib/XmlRpcContrib/Server.pm 2006-05-29 12:54:47 UTC (rev 10380) @@ -77,10 +77,10 @@ } ################################################################################ -sub callProcedure { +sub dispatch { my ($this, $session, $data) = @_; - writeDebug("called callProcedure"); + writeDebug("called dispatch"); writeDebug("data=$data"); # check ENV @@ -94,7 +94,7 @@ # parse my $request = $this->{parser}->parse($data); - return $this->getError(400, 'Bad Request', -32700, $request) unless ref($request); + return $this->getError('400 Bad Request', -32700, $request) unless ref($request); # check impl my $name = $request->name; @@ -113,12 +113,11 @@ # print response my $response; - if ($error < 0) { - $response = $this->getError($status, $error, $result); # error - } elsif ($error == 0) { - $response = $this->getResponse($status, $result); # default + if ($error == 0) { + $result = RPC::XML::string->new($result) if not ref $result; + $response = $this->getResponse($status, $result); # default } else { - $response = $this->getResponse($status, RPC::XML::string->new($result)); # plain + $response = $this->getError($status, $error, $result); # error } writeDebug("response=$response"); return $response; Modified: twiki/branches/DEVELOP/twikiplugins/XmlRpcContrib/lib/TWiki/Contrib/XmlRpcContrib.pm =================================================================== --- twiki/branches/DEVELOP/twikiplugins/XmlRpcContrib/lib/TWiki/Contrib/XmlRpcContrib.pm 2006-05-29 12:54:04 UTC (rev 10379) +++ twiki/branches/DEVELOP/twikiplugins/XmlRpcContrib/lib/TWiki/Contrib/XmlRpcContrib.pm 2006-05-29 12:54:47 UTC (rev 10380) @@ -26,11 +26,11 @@ use strict; $VERSION = '$Rev$'; -$RELEASE = '0.01'; +$RELEASE = '0.02'; ################################################################################ # register an implementation for a handler -sub registerXMLHandler { +sub registerRPCHandler { my ($methodName, $methodImpl) = @_; # SMELL: this may override a previous registration; must we take care? @@ -39,7 +39,7 @@ ################################################################################ # process an xml call -sub callProcedure { +sub dispatch { my ($session, $data) = @_; _initServer(); @@ -49,7 +49,7 @@ } $session->enterContext('xmlrpc'); - print $SERVER->callProcedure($session, $data); + print $SERVER->dispatch($session, $data); $session->leaveContext('xmlrpc'); } |