Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
f1871023
Commit
f1871023
authored
Jan 15, 2003
by
Martin v. Löwis
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Patch #473586: Implement CGIXMLRPCRequestHandler.
parent
eee446b7
Changes
3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
477 additions
and
125 deletions
+477
-125
Doc/lib/libsimplexmlrpc.tex
Doc/lib/libsimplexmlrpc.tex
+103
-16
Lib/SimpleXMLRPCServer.py
Lib/SimpleXMLRPCServer.py
+371
-109
Misc/NEWS
Misc/NEWS
+3
-0
No files found.
Doc/lib/libsimplexmlrpc.tex
View file @
f1871023
...
...
@@ -8,14 +8,13 @@
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.
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
\class
{
SimpleXMLRPCRequestHandler
}
. The
\var
{
addr
}
and
...
...
@@ -27,6 +26,10 @@ and the request handler is based on the
the XML-RPC protocol.
\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
}{}
Create a new request handler instance. This request handler
...
...
@@ -38,20 +41,18 @@ and the request handler is based on the
\subsection
{
SimpleXMLRPCServer Objects
\label
{
simple-xmlrpc-servers
}}
The
\class
{
SimpleXMLRPCServer
}
class
provides two methods that a
n
application can use to register functions that can be called via the
XML-RPC protocol via the request handler
.
The
\class
{
SimpleXMLRPCServer
}
class
is based o
n
\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. 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.
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}
\begin{methoddesc}
[SimpleXMLRPCServer]
{
register
_
instance
}{
instance
}
...
...
@@ -68,3 +69,89 @@ XML-RPC protocol via the request handler.
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
}{}
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
Lib/SimpleXMLRPCServer.py
View file @
f1871023
This diff is collapsed.
Click to expand it.
Misc/NEWS
View file @
f1871023
...
...
@@ -78,6 +78,9 @@ Extension modules
Library
-------
- SimpleXMLRPCServer now supports CGI through the CGIXMLRPCRequestHandler
class.
- The sets module now raises TypeError in __cmp__, to clarify that
sets are not intended to be three-way-compared; the comparison
operators are overloaded as subset/superset tests.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment