[Python-checkins] python/dist/src/Doc/lib libsimplexmlrpc.tex,1.3,1.4
loewis@users.sourceforge.net
loewis@users.sourceforge.net
Wed, 15 Jan 2003 03:37:25 -0800
Update of /cvsroot/python/python/dist/src/Doc/lib
In directory sc8-pr-cvs1:/tmp/cvs-serv3409/Doc/lib
Modified Files:
libsimplexmlrpc.tex
Log Message:
Patch #473586: Implement CGIXMLRPCRequestHandler.
Index: libsimplexmlrpc.tex
===================================================================
RCS file: /cvsroot/python/python/dist/src/Doc/lib/libsimplexmlrpc.tex,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** libsimplexmlrpc.tex 28 Nov 2001 07:32:53 -0000 1.3
--- libsimplexmlrpc.tex 15 Jan 2003 11:37:23 -0000 1.4
***************
*** 9,20 ****
The \module{SimpleXMLRPCServer} module provides a basic server
! framework for XML-RPC servers written in Python. The server object is
! based on the \class{\refmodule{SocketServer}.TCPServer} class,
! and the request handler is based on the
! \class{\refmodule{BaseHTTPServer}.BaseHTTPRequestHandler} class.
!
\begin{classdesc}{SimpleXMLRPCServer}{addr\optional{,
requestHandler\optional{, logRequests}}}
Create a new server instance. The \var{requestHandler} parameter
should be a factory for request handler instances; it defaults to
--- 9,19 ----
The \module{SimpleXMLRPCServer} module provides a basic server
! framework for XML-RPC servers written in Python. Servers can either
! be free standing, using \class{SimpleXMLRPCServer}, or embedded in a
! CGI environment, using \class{CGIXMLRPCRequestHandler}.
\begin{classdesc}{SimpleXMLRPCServer}{addr\optional{,
requestHandler\optional{, logRequests}}}
+
Create a new server instance. The \var{requestHandler} parameter
should be a factory for request handler instances; it defaults to
***************
*** 28,31 ****
--- 27,34 ----
\end{classdesc}
+ \begin{classdesc}{CGIXMLRPCRequestHandler}{}
+ Create a new instance to handle XML-RPC requests in a CGI
+ environment. \versionadded{2.3}
+ \end{classdesc}
\begin{classdesc}{SimpleXMLRPCRequestHandler}{}
***************
*** 39,56 ****
\subsection{SimpleXMLRPCServer Objects \label{simple-xmlrpc-servers}}
! The \class{SimpleXMLRPCServer} class provides two methods that an
! application can use to register functions that can be called via the
! XML-RPC protocol via the request handler.
\begin{methoddesc}[SimpleXMLRPCServer]{register_function}{function\optional{,
name}}
! Register a function that can respond to XML-RPC requests. The
! function must be callable with a single parameter which will be the
! return value of \function{\refmodule{xmlrpclib}.loads()} when called
! with the payload of the request. If \var{name} is given, it will be
! the method name associated with \var{function}, otherwise
! \code{\var{function}.__name__} will be used. \var{name} can be
! either a normal or Unicode string, and may contain characters not
! legal in Python identifiers, including the period character.
\end{methoddesc}
--- 42,57 ----
\subsection{SimpleXMLRPCServer Objects \label{simple-xmlrpc-servers}}
! The \class{SimpleXMLRPCServer} class is based on
! \class{SocketServer.TCPServer} and provides a means of creating
! simple, stand alone XML-RPC servers.
\begin{methoddesc}[SimpleXMLRPCServer]{register_function}{function\optional{,
name}}
! Register a function that can respond to XML-RPC requests. If
! \var{name} is given, it will be the method name associated with
! \var{function}, otherwise \code{\var{function}.__name__} will be
! used. \var{name} can be either a normal or Unicode string, and may
! contain characters not legal in Python identifiers, including the
! period character.
\end{methoddesc}
***************
*** 69,70 ****
--- 70,157 ----
return value is passed back to the client.
\end{methoddesc}
+
+ \begin{methoddesc}{register_introspection_functions}{}
+ Registers the XML-RPC introspection functions \code{system.listMethods},
+ \code{system.methodHelp} and \code{system.methodSignature}.
+ \versionadded{2.3}
+ \end{methoddesc}
+
+ \begin{methoddesc}{register_multicall_functions}{}
+ Registers the XML-RPC multicall function system.multicall.
+ \end{methoddesc}
+
+ Example:
+
+ \begin{verbatim}
+ class MyFuncs:
+ def div(self, x, y) : return div(x,y)
+
+
+ server = SimpleXMLRPCServer(("localhost", 8000))
+ server.register_function(pow)
+ server.register_function(lambda x,y: x+y, 'add')
+ server.register_introspection_functions()
+ server.register_instance(MyFuncs())
+ server.serve_forever()
+ \end{verbatim}
+
+ \subsection{CGIXMLRPCRequestHandler}
+
+ The \class{CGIXMLRPCRequestHandler} class can be used to
+ handle XML-RPC requests sent to Python CGI scripts.
+
+ \begin{methoddesc}{register_function}{function\optional{, name}}
+ Register a function that can respond to XML-RPC requests. If
+ \var{name] is given, it will be the method name associated with
+ function, otherwise \var{function.__name__} will be used. \var{name}
+ can be either a normal or Unicode string, and may contain
+ characters not legal in Python identifiers, including the period
+ character.
+ \end{methoddesc}
+
+ \begin{methoddesc}{register_instance}{instance}
+ Register an object which is used to expose method names
+ which have not been registered using \method{register_function()}. If
+ instance contains a \method{_dispatch()} method, it is called with the
+ requested method name and the parameters from the
+ request; the return value is returned to the client as the result.
+ If instance does not have a \methode{_dispatch()} method, it is searched
+ for an attribute matching the name of the requested method; if
+ the requested method name contains periods, each
+ component of the method name is searched for individually,
+ with the effect that a simple hierarchical search is performed.
+ The value found from this search is then called with the
+ parameters from the request, and the return value is passed
+ back to the client.
+ \end{methoddesc}
+
+ \begin{methoddesc}{register_introspection_functions}{}
+ Register the XML-RPC introspection functions
+ \code{system.listMethods}, \code{system.methodHelp} and
+ \code{system.methodSignature}.
+ \end{methoddesc}
+
+ \begin{methoddesc}{register_multicall_functions}{}
+ Register the XML-RPC multicall function \code{system.multicall}.
+ \end{methoddesc}
+
+ \begin{methoddesc}{handle_request}{\optional{request_text = None}}
+ Handle a XML-RPC request. If \var{request_text} is given, it
+ should be the POST data provided by the HTTP server,
+ otherwise the contents of stdin will be used.
+ \end{methoddesc}
+
+ Example:
+
+ \begin{verbatim}
+ class MyFuncs:
+ def div(self, x, y) : return div(x,y)
+
+
+ handler = CGIXMLRPCRequestHandler()
+ handler.register_function(pow)
+ handler.register_function(lambda x,y: x+y, 'add')
+ handler.register_introspection_functions()
+ handler.register_instance(MyFuncs())
+ handler.handle_request()
+ \end{verbatim}
\ No newline at end of file