parent
fc14ed2be1
commit
f3e7d44276
3 changed files with 48 additions and 22 deletions
26
tests/test_multi_client_it.py
Normal file
26
tests/test_multi_client_it.py
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
from tests.test_client_it import ClientTestCase
|
||||||
|
from webdav3.client import Client
|
||||||
|
|
||||||
|
|
||||||
|
class MultiClientTestCase(ClientTestCase):
|
||||||
|
options2 = {
|
||||||
|
'webdav_hostname': 'https://wrong.url.ru',
|
||||||
|
'webdav_login': 'webdavclient.test2',
|
||||||
|
'webdav_password': 'Qwerty123!',
|
||||||
|
'webdav_override_methods': {
|
||||||
|
'check': 'FAKE',
|
||||||
|
'download': 'FAKE',
|
||||||
|
'upload': 'FAKE',
|
||||||
|
'clean': 'FAKE',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(ClientTestCase, self).setUp()
|
||||||
|
self.second_client = Client(self.options2)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
|
@ -89,11 +89,8 @@ class Client(object):
|
||||||
# controls whether to verify the server's TLS certificate or not
|
# controls whether to verify the server's TLS certificate or not
|
||||||
verify = True
|
verify = True
|
||||||
|
|
||||||
# Sets the session for subsequent requests
|
|
||||||
session = requests.Session()
|
|
||||||
|
|
||||||
# HTTP headers for different actions
|
# HTTP headers for different actions
|
||||||
http_header = {
|
default_http_header = {
|
||||||
'list': ["Accept: */*", "Depth: 1"],
|
'list': ["Accept: */*", "Depth: 1"],
|
||||||
'free': ["Accept: */*", "Depth: 0", "Content-Type: text/xml"],
|
'free': ["Accept: */*", "Depth: 0", "Content-Type: text/xml"],
|
||||||
'copy': ["Accept: */*"],
|
'copy': ["Accept: */*"],
|
||||||
|
@ -107,7 +104,7 @@ class Client(object):
|
||||||
}
|
}
|
||||||
|
|
||||||
# mapping of actions to WebDAV methods
|
# mapping of actions to WebDAV methods
|
||||||
requests = {
|
default_requests = {
|
||||||
'options': 'OPTIONS',
|
'options': 'OPTIONS',
|
||||||
'download': "GET",
|
'download': "GET",
|
||||||
'upload': "PUT",
|
'upload': "PUT",
|
||||||
|
@ -150,6 +147,9 @@ class Client(object):
|
||||||
`webdav_verbose`: (optional) set verbose mode on.off. By default verbose mode is off.
|
`webdav_verbose`: (optional) set verbose mode on.off. By default verbose mode is off.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
self.session = requests.Session()
|
||||||
|
self.http_header = Client.default_http_header.copy()
|
||||||
|
self.requests = Client.default_requests.copy()
|
||||||
webdav_options = get_options(option_type=WebDAVSettings, from_options=options)
|
webdav_options = get_options(option_type=WebDAVSettings, from_options=options)
|
||||||
|
|
||||||
self.webdav = WebDAVSettings(webdav_options)
|
self.webdav = WebDAVSettings(webdav_options)
|
||||||
|
@ -164,11 +164,11 @@ class Client(object):
|
||||||
the specified action.
|
the specified action.
|
||||||
:return: the dictionary of headers for specified action.
|
:return: the dictionary of headers for specified action.
|
||||||
"""
|
"""
|
||||||
if action in Client.http_header:
|
if action in self.http_header:
|
||||||
try:
|
try:
|
||||||
headers = Client.http_header[action].copy()
|
headers = self.http_header[action].copy()
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
headers = Client.http_header[action][:]
|
headers = self.http_header[action][:]
|
||||||
else:
|
else:
|
||||||
headers = list()
|
headers = list()
|
||||||
|
|
||||||
|
@ -211,7 +211,7 @@ class Client(object):
|
||||||
if self.session.auth:
|
if self.session.auth:
|
||||||
self.session.request(method="GET", url=self.webdav.hostname, verify=self.verify) # (Re)Authenticates against the proxy
|
self.session.request(method="GET", url=self.webdav.hostname, verify=self.verify) # (Re)Authenticates against the proxy
|
||||||
response = self.session.request(
|
response = self.session.request(
|
||||||
method=Client.requests[action],
|
method=self.requests[action],
|
||||||
url=self.get_url(path),
|
url=self.get_url(path),
|
||||||
auth=(self.webdav.login, self.webdav.password),
|
auth=(self.webdav.login, self.webdav.password),
|
||||||
headers=self.get_headers(action, headers_ext),
|
headers=self.get_headers(action, headers_ext),
|
||||||
|
|
|
@ -27,20 +27,20 @@ class WebDAVSettings(ConnectionSettings):
|
||||||
keys = {'hostname', 'login', 'password', 'token', 'root', 'cert_path', 'key_path', 'recv_speed', 'send_speed',
|
keys = {'hostname', 'login', 'password', 'token', 'root', 'cert_path', 'key_path', 'recv_speed', 'send_speed',
|
||||||
'verbose', 'disable_check', 'override_methods'}
|
'verbose', 'disable_check', 'override_methods'}
|
||||||
|
|
||||||
hostname = None
|
|
||||||
login = None
|
|
||||||
password = None
|
|
||||||
token = None
|
|
||||||
root = None
|
|
||||||
cert_path = None
|
|
||||||
key_path = None
|
|
||||||
recv_speed = None
|
|
||||||
send_speed = None
|
|
||||||
verbose = None
|
|
||||||
disable_check = False
|
|
||||||
override_methods = {}
|
|
||||||
|
|
||||||
def __init__(self, options):
|
def __init__(self, options):
|
||||||
|
self.hostname = None
|
||||||
|
self.login = None
|
||||||
|
self.password = None
|
||||||
|
self.token = None
|
||||||
|
self.root = None
|
||||||
|
self.cert_path = None
|
||||||
|
self.key_path = None
|
||||||
|
self.recv_speed = None
|
||||||
|
self.send_speed = None
|
||||||
|
self.verbose = None
|
||||||
|
self.disable_check = False
|
||||||
|
self.override_methods = {}
|
||||||
|
|
||||||
self.options = dict()
|
self.options = dict()
|
||||||
|
|
||||||
for key in self.keys:
|
for key in self.keys:
|
||||||
|
|
Loading…
Add table
Reference in a new issue