+# pylint: disable=c0111, c0103
#
# PLCAPI XML-RPC and SOAP interfaces
#
import os
-import string
import json
import xmlrpc.client
# broke with f24, somehow we get a unicode
# as an incoming string to be translated
str_xml_escape_table = \
- string.maketrans("".join((chr(x) for x in invalid_codepoints)),
- "?" * len(invalid_codepoints))
+ str.maketrans("".join((chr(x) for x in invalid_codepoints)),
+ "?" * len(invalid_codepoints))
# loosely inspired from
# http://stackoverflow.com/questions/1324067/
# how-do-i-get-str-translate-to-work-with-unicode-strings
{invalid: "?" for invalid in invalid_codepoints}
-def xmlrpclib_escape(s, replace=string.replace):
+def xmlrpclib_escape(s, replace=str.replace):
"""
xmlrpclib does not handle invalid 7-bit control characters. This
function augments xmlrpclib.escape, which by default only replaces
def test_xmlrpclib_escape():
- inputs = [
+ incomings = [
# full ASCII
"".join((chr(x) for x in range(128))),
# likewise but as a unicode string up to 256
"".join((chr(x) for x in range(256))),
]
- for input in inputs:
+ for incoming in incomings:
print("==================== xmlrpclib_escape INPUT")
- print(type(input), '->', input)
+ print(type(incoming), '->', incoming)
print("==================== xmlrpclib_escape OUTPUT")
- print(xmlrpclib_escape(input))
+ print(xmlrpclib_escape(incoming))
def xmlrpclib_dump(self, value, write):
try:
import SOAPpy
from SOAPpy.Parser import parseSOAPRPC
- from SOAPpy.Types import faultType
from SOAPpy.NS import NS
from SOAPpy.SOAPBuilder import buildSOAP
except ImportError:
raise PLCAPIError("Unsupported database type "
+ self.config.PLC_DB_TYPE)
- # Aspects modify the API by injecting code before, after or
- # around method calls.
- # http://github.com/baris/pyaspects/blob/master/README
- #
- if self.config.PLC_RATELIMIT_ENABLED:
- from aspects import apply_ratelimit_aspect
- apply_ratelimit_aspect()
-
- if getattr(self.config, "PLC_NETCONFIG_ENABLED", False):
- from aspects.netconfigaspects import apply_netconfig_aspect
- apply_netconfig_aspect()
-
# Enable Caching. Only for GetSlivers for the moment.
# TODO: we may consider to do this in an aspect like the ones above.
try:
# Parse request into method name and arguments
try:
- interface = xmlrpclib
+ interface = xmlrpc.client
(args, method) = xmlrpc.client.loads(data)
- methodresponse = True
except Exception as exc:
if SOAPpy is not None:
interface = SOAPpy
result = self.call(source, method, *args)
except PLCFault as fault:
# Handle expected faults
- if interface == xmlrpclib:
+ if interface == xmlrpc.client:
result = fault
methodresponse = None
elif interface == SOAPpy:
% (fault.faultCode, fault.faultString))
# Return result
- if interface == xmlrpclib:
+ if interface == xmlrpc.client:
if not isinstance(result, PLCFault):
result = (result,)
data = xmlrpc.client.dumps(result, methodresponse=True,
- encoding=self.encoding, allow_none=1)
+ encoding=self.encoding, allow_none=1)
elif interface == SOAPpy:
data = buildSOAP(
kw={'%sResponse' % method: {'Result': result}},