mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-01-26 16:16:31 -06:00
Added docstrings to the new rpc.xml_dumps() and rcp.xml_loads() functions
This commit is contained in:
parent
a04857a239
commit
0227a12949
@ -18,7 +18,13 @@
|
|||||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Core RPC functionality.
|
Shared RPC client/server functionality.
|
||||||
|
|
||||||
|
This module adds some additional functionality on top of the ``xmlrpclib``
|
||||||
|
module in the Python standard library. For documentation on the
|
||||||
|
``xmlrpclib`` module, see:
|
||||||
|
|
||||||
|
http://docs.python.org/library/xmlrpclib.html
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from types import NoneType
|
from types import NoneType
|
||||||
@ -32,7 +38,7 @@ def xml_wrap(value):
|
|||||||
Because ``xmlrpclib.dumps()`` will itself convert all ``unicode`` instances
|
Because ``xmlrpclib.dumps()`` will itself convert all ``unicode`` instances
|
||||||
into UTF-8 encoded ``str`` instances, we don't do it here.
|
into UTF-8 encoded ``str`` instances, we don't do it here.
|
||||||
|
|
||||||
So in total, when encoding data for an XML-RPC request, the following
|
So in total, when encoding data for an XML-RPC packet, the following
|
||||||
transformations occur:
|
transformations occur:
|
||||||
|
|
||||||
* All ``str`` instances are treated as binary data and are wrapped in
|
* All ``str`` instances are treated as binary data and are wrapped in
|
||||||
@ -42,7 +48,9 @@ def xml_wrap(value):
|
|||||||
converted to UTF-8 encoded ``str`` instances (although as mentioned,
|
converted to UTF-8 encoded ``str`` instances (although as mentioned,
|
||||||
not by this function).
|
not by this function).
|
||||||
|
|
||||||
Also see `xml_unwrap`.
|
Also see `xml_unwrap()`.
|
||||||
|
|
||||||
|
:param value: The simple scalar or simple compound value to wrap.
|
||||||
"""
|
"""
|
||||||
if type(value) in (list, tuple):
|
if type(value) in (list, tuple):
|
||||||
return tuple(xml_wrap(v) for v in value)
|
return tuple(xml_wrap(v) for v in value)
|
||||||
@ -60,16 +68,19 @@ def xml_unwrap(value, encoding='UTF-8'):
|
|||||||
"""
|
"""
|
||||||
Unwrap all ``xmlrpc.Binary``, decode all ``str`` into ``unicode``.
|
Unwrap all ``xmlrpc.Binary``, decode all ``str`` into ``unicode``.
|
||||||
|
|
||||||
When decoding data from an XML-RPC request, the following transformations
|
When decoding data from an XML-RPC packet, the following transformations
|
||||||
occur:
|
occur:
|
||||||
|
|
||||||
* The binary payloads of all ``xmlrpclib.Binary`` instances are
|
* The binary payloads of all ``xmlrpclib.Binary`` instances are
|
||||||
returned as ``str`` instances.
|
returned as ``str`` instances.
|
||||||
|
|
||||||
* All ``str`` instances are treated as UTF-8 encoded character data.
|
* All ``str`` instances are treated as UTF-8 encoded Unicode strings.
|
||||||
They are decoded and the resulting ``unicode`` instance is returned.
|
They are decoded and the resulting ``unicode`` instance is returned.
|
||||||
|
|
||||||
Also see `xml_wrap`.
|
Also see `xml_wrap()`.
|
||||||
|
|
||||||
|
:param value: The value to unwrap.
|
||||||
|
:param encoding: The Unicode encoding to use (defaults to ``'UTF-8'``).
|
||||||
"""
|
"""
|
||||||
if type(value) in (list, tuple):
|
if type(value) in (list, tuple):
|
||||||
return tuple(xml_unwrap(v, encoding) for v in value)
|
return tuple(xml_unwrap(v, encoding) for v in value)
|
||||||
@ -87,6 +98,24 @@ def xml_unwrap(value, encoding='UTF-8'):
|
|||||||
|
|
||||||
|
|
||||||
def xml_dumps(params, methodname=None, methodresponse=False, encoding='UTF-8'):
|
def xml_dumps(params, methodname=None, methodresponse=False, encoding='UTF-8'):
|
||||||
|
"""
|
||||||
|
Encode an XML-RPC data packet, transparently wraping ``params``.
|
||||||
|
|
||||||
|
This function will wrap ``params`` using `xml_wrap()` and will
|
||||||
|
then encode the XML-RPC data packet using ``xmlrpclib.dumps()`` (from the
|
||||||
|
Python standard library).
|
||||||
|
|
||||||
|
For documentation on the ``xmlrpclib.dumps()`` function, see:
|
||||||
|
|
||||||
|
http://docs.python.org/library/xmlrpclib.html#convenience-functions
|
||||||
|
|
||||||
|
Also see `xml_loads()`.
|
||||||
|
|
||||||
|
:param params: A ``tuple`` or an ``xmlrpclib.Fault`` instance.
|
||||||
|
:param methodname: The name of the method to call if this is a request.
|
||||||
|
:param methodresponse: Set this to ``True`` if this is a response.
|
||||||
|
:param encoding: The Unicode encoding to use (defaults to ``'UTF-8'``).
|
||||||
|
"""
|
||||||
if type(params) is tuple:
|
if type(params) is tuple:
|
||||||
params = xml_wrap(params)
|
params = xml_wrap(params)
|
||||||
else:
|
else:
|
||||||
@ -100,5 +129,27 @@ def xml_dumps(params, methodname=None, methodresponse=False, encoding='UTF-8'):
|
|||||||
|
|
||||||
|
|
||||||
def xml_loads(data):
|
def xml_loads(data):
|
||||||
|
"""
|
||||||
|
Decode the XML-RPC packet in ``data``, transparently unwrapped its params.
|
||||||
|
|
||||||
|
This function will decode the XML-RPC packet in ``data`` using
|
||||||
|
``xmlrpclib.loads()`` (from the Python standard library). If ``data``
|
||||||
|
contains a fault, ``xmlrpclib.loads()`` will itself raise an
|
||||||
|
``xmlrpclib.Fault`` exception.
|
||||||
|
|
||||||
|
Assuming an exception is not raised, this function will then unwrap the
|
||||||
|
params in ``data`` using `xml_unwrap()`. Finally, a
|
||||||
|
``(params, methodname)`` tuple is returned containing the unwrapped params
|
||||||
|
and the name of the method being called. If the packet contains no method
|
||||||
|
name, ``methodname`` will be ``None``.
|
||||||
|
|
||||||
|
For documentation on the ``xmlrpclib.loads()`` function, see:
|
||||||
|
|
||||||
|
http://docs.python.org/library/xmlrpclib.html#convenience-functions
|
||||||
|
|
||||||
|
Also see `xml_dumps()`.
|
||||||
|
|
||||||
|
:param data: The XML-RPC packet to decode.
|
||||||
|
"""
|
||||||
(params, method) = loads(data)
|
(params, method) = loads(data)
|
||||||
return (xml_unwrap(params), method)
|
return (xml_unwrap(params), method)
|
||||||
|
Loading…
Reference in New Issue
Block a user