# HG changeset patch # User Thierry Florac # Date 1680526010 -7200 # Node ID 5f84a8151bf6363baf59ebdf14611f464d6cc782 # Parent 82cc5666171880c340af105f9cabc32967861f15 Updated XML-RPC call status codes diff -r 82cc56661718 -r 5f84a8151bf6 src/ztfy/utils/protocol/xmlrpc.py --- a/src/ztfy/utils/protocol/xmlrpc.py Wed Jun 01 18:47:23 2022 +0200 +++ b/src/ztfy/utils/protocol/xmlrpc.py Mon Apr 03 14:46:50 2023 +0200 @@ -17,7 +17,6 @@ ############################################################################## -# import standard packages import base64 import cookielib import httplib @@ -25,14 +24,6 @@ import urllib2 import xmlrpclib -# import Zope3 interfaces - -# import local interfaces - -# import Zope3 packages - -# import local packages - class TimeoutHTTP(httplib.HTTP): def __init__(self, host='', port=None, strict=None, timeout=None): @@ -40,6 +31,7 @@ port = None self._setup(self._connection_class(host, port, strict, timeout)) + class TimeoutHTTPS(httplib.HTTPS): def __init__(self, host='', port=None, strict=None, timeout=None): if port == 0: @@ -53,7 +45,8 @@ _http_connection = httplib.HTTPConnection _http_connection_compat = TimeoutHTTP - def __init__(self, user_agent, credentials=(), cookies=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, headers=None): + def __init__(self, user_agent, credentials=(), cookies=None, + timeout=socket._GLOBAL_DEFAULT_TIMEOUT, headers=None): xmlrpclib.Transport.__init__(self) self.user_agent = user_agent self.credentials = credentials @@ -158,8 +151,9 @@ if cookie.name.startswith('Set-Cookie'): cookie.name = cookie.name.split(': ', 1)[1] self.cookies.set_cookie(cookie) - if response.status != 200: - raise xmlrpclib.ProtocolError(host + handler, response.status, response.reason, response.getheaders()) + if response.status >= 300: + raise xmlrpclib.ProtocolError(host + handler, response.status, + response.reason, response.getheaders()) return self.parse_response(response) def _get_response_compat(self, connection, host, handler): @@ -169,7 +163,7 @@ crequest = XMLRPCCookieAuthTransport.CookieRequest('http://%s/' % host) cresponse = XMLRPCCookieAuthTransport.CompatCookieResponse(headers) self.cookies.extract_cookies(cresponse, crequest) - if errcode != 200: + if errcode >= 300: raise xmlrpclib.ProtocolError(host + handler, errcode, errmsg, headers) try: sock = connection._conn.sock @@ -185,24 +179,29 @@ _http_connection_compat = TimeoutHTTPS -def getClient(uri, credentials=(), verbose=False, allow_none=0, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, headers=None): +def getClient(uri, credentials=(), verbose=False, allow_none=0, + timeout=socket._GLOBAL_DEFAULT_TIMEOUT, headers=None): """Get an XML-RPC client which supports basic authentication""" if uri.startswith('https:'): - transport = SecureXMLRPCCookieAuthTransport('Python XML-RPC Client/0.1 (ZTFY secure transport)', credentials, timeout=timeout, headers=headers) + transport = SecureXMLRPCCookieAuthTransport('Python XML-RPC Client/0.1 (ZTFY secure transport)', + credentials, timeout=timeout, headers=headers) else: - transport = XMLRPCCookieAuthTransport('Python XML-RPC Client/0.1 (ZTFY basic transport)', credentials, timeout=timeout, headers=headers) + transport = XMLRPCCookieAuthTransport('Python XML-RPC Client/0.1 (ZTFY basic transport)', + credentials, timeout=timeout, headers=headers) return xmlrpclib.Server(uri, transport=transport, verbose=verbose, allow_none=allow_none) -def getClientWithCookies(uri, credentials=(), verbose=False, allow_none=0, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, - headers=None, cookies=None): +def getClientWithCookies(uri, credentials=(), verbose=False, allow_none=0, + timeout=socket._GLOBAL_DEFAULT_TIMEOUT, headers=None, cookies=None): """Get an XML-RPC client which supports authentication through cookies""" if cookies is None: cookies = cookielib.CookieJar() if uri.startswith('https:'): - transport = SecureXMLRPCCookieAuthTransport('Python XML-RPC Client/0.1 (ZTFY secure cookie transport)', + transport = SecureXMLRPCCookieAuthTransport('Python XML-RPC Client/0.1 (ZTFY secure ' + 'cookie transport)', credentials, cookies, timeout, headers) else: - transport = XMLRPCCookieAuthTransport('Python XML-RPC Client/0.1 (ZTFY basic cookie transport)', + transport = XMLRPCCookieAuthTransport('Python XML-RPC Client/0.1 (ZTFY basic ' + 'cookie transport)', credentials, cookies, timeout, headers) return xmlrpclib.Server(uri, transport=transport, verbose=verbose, allow_none=allow_none)