SickGear/lib/xmlrpclib_to/__init__.py
2023-02-09 13:41:15 +00:00

51 lines
1.6 KiB
Python

try:
import xmlrpclib
from xmlrpclib import *
except ImportError:
# Python 3.0 portability fix...
import xmlrpc.client as xmlrpclib
from xmlrpc.client import *
try:
import httplib
except ImportError:
import http.client as httplib
import socket
class ServerProxy(xmlrpclib.ServerProxy):
def __init__(self, uri, transport=None, encoding=None, verbose=0,
allow_none=0, use_datetime=0, timeout=None):
if timeout is not None:
if uri.startswith('http://'):
secure = False
elif uri.startswith('https://'):
secure = True
transport = TimeoutTransport(use_datetime, timeout, secure=secure)
xmlrpclib.ServerProxy.__init__(self, uri, transport, encoding, verbose,
allow_none, use_datetime)
class TimeoutTransport(xmlrpclib.Transport):
def __init__(self, use_datetime=0, timeout=socket._GLOBAL_DEFAULT_TIMEOUT,
secure=False):
xmlrpclib.Transport.__init__(self, use_datetime)
self.timeout = timeout
self.secure = secure
def make_connection(self, host):
if self._connection and host == self._connection[0]:
return self._connection[1]
chost, self._extra_headers, x509 = self.get_host_info(host)
if self.secure:
self._connection = host, httplib.HTTPSConnection(
chost, None, timeout=self.timeout, **(x509 or {})
)
else:
self._connection = host, httplib.HTTPConnection(
chost, timeout=self.timeout
)
return self._connection[1]