1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
from typing import Dict, Optional
from tusclient.uploader import Uploader, AsyncUploader
class TusClient:
"""
Object representation of Tus client.
:Attributes:
- url (str):
represents the tus server's create extension url. On instantiation this argument
must be passed to the constructor.
- headers (dict):
This can be used to set the server specific headers. These headers would be sent
along with every request made by the cleint to the server. This may be used to set
authentication headers. These headers should not include headers required by tus
protocol. If not set this defaults to an empty dictionary.
:Constructor Args:
- url (str)
- headers (Optiional[dict])
"""
def __init__(self, url: str, headers: Optional[Dict[str, str]] = None):
self.url = url
self.headers = headers or {}
def set_headers(self, headers: Dict[str, str]):
"""
Set tus client headers.
Update and/or set new headers that would be sent along with every request made
to the server.
:Args:
- headers (dict):
key, value pairs of the headers to be set. This argument is required.
"""
self.headers.update(headers)
def uploader(self, *args, **kwargs) -> Uploader:
"""
Return uploader instance pointing at current client instance.
Return uploader instance with which you can control the upload of a specific
file. The current instance of the tus client is passed to the uploader on creation.
:Args:
see tusclient.uploader.Uploader for required and optional arguments.
"""
kwargs["client"] = self
return Uploader(*args, **kwargs)
def async_uploader(self, *args, **kwargs) -> AsyncUploader:
kwargs["client"] = self
return AsyncUploader(*args, **kwargs)
|