mirror of
https://github.com/SickGear/SickGear.git
synced 2024-12-01 00:43:37 +00:00
52 lines
1.6 KiB
Python
52 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]
|