diff --git a/filecloudapi/fcserver.py b/filecloudapi/fcserver.py index 986f191..dd877e6 100644 --- a/filecloudapi/fcserver.py +++ b/filecloudapi/fcserver.py @@ -615,25 +615,34 @@ def upload_bytes( data: bytes, serverpath: str, datemodified: datetime.datetime = datetime.datetime.now(), + nofileoverwrite: Optional[bool] = False, + iflastmodified: Optional[datetime.datetime] = None, progress: Optional[Progress] = None, ) -> None: """ Upload bytes 'data' to server at 'serverpath'. """ - self.upload(BufferedReader(BytesIO(data)), serverpath, datemodified, progress=progress) # type: ignore + self.upload(BufferedReader(BytesIO(data)), serverpath, datemodified, nofileoverwrite=nofileoverwrite, iflastmodified=iflastmodified, progress=progress) # type: ignore def upload_str( self, data: str, serverpath: str, datemodified: datetime.datetime = datetime.datetime.now(), + nofileoverwrite: Optional[bool] = False, + iflastmodified: Optional[datetime.datetime] = None, progress: Optional[Progress] = None, ) -> None: """ Upload str 'data' UTF-8 encoded to server at 'serverpath'. """ self.upload_bytes( - data.encode("utf-8"), serverpath, datemodified, progress=progress + data.encode("utf-8"), + serverpath, + datemodified, + nofileoverwrite=nofileoverwrite, + iflastmodified=iflastmodified, + progress=progress, ) def upload_file( @@ -641,6 +650,8 @@ def upload_file( localpath: pathlib.Path, serverpath: str, datemodified: datetime.datetime = datetime.datetime.now(), + nofileoverwrite: Optional[bool] = False, + iflastmodified: Optional[datetime.datetime] = None, adminproxyuserid: Optional[str] = None, progress: Optional[Progress] = None, ) -> None: @@ -652,6 +663,8 @@ def upload_file( uploadf, serverpath, datemodified, + nofileoverwrite, + iflastmodified, adminproxyuserid=adminproxyuserid, progress=progress, ) @@ -671,7 +684,7 @@ def upload( uploadf: BufferedReader, serverpath: str, datemodified: datetime.datetime, - nofileoverwrite: bool = False, + nofileoverwrite: Optional[bool] = False, iflastmodified: Optional[datetime.datetime] = None, adminproxyuserid: Optional[str] = None, progress: Optional[Progress] = None, @@ -801,11 +814,14 @@ def close(self): "filesize": 0, "date": self._serverdatetime(datemodified), "adminproxyuserid": adminproxyuserid, - "nofileoverwrite": nofileoverwrite, - "iflastmodified": ( - self._serverdatetime(iflastmodified) if iflastmodified else None - ), } + + if nofileoverwrite is not None: + params["nofileoverwrite"] = "true" if nofileoverwrite else "false" + + if iflastmodified is not None: + params["iflastmodified"] = self._serverdatetime(iflastmodified) + params_str = urlencode(params) if params_str.find("%2FSHARED%2F%21"): @@ -846,12 +862,14 @@ def close(self): "filename": name, "date": self._serverdatetime(datemodified), "adminproxyuserid": adminproxyuserid, - "nofileoverwrite": nofileoverwrite, - "iflastmodified": ( - self._serverdatetime(iflastmodified) if iflastmodified else None - ), } + if nofileoverwrite is not None: + params["nofileoverwrite"] = "true" if nofileoverwrite else "false" + + if iflastmodified is not None: + params["iflastmodified"] = self._serverdatetime(iflastmodified) + if data_size is not None: params["filesize"] = data_size diff --git a/pyproject.toml b/pyproject.toml index 7d81840..8fe56b3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [tool.poetry] name = "filecloudapi-python" -version = "0.3.0" +version = "0.4.0" description = "A Python library to connect to a Filecloud server" packages = [{ include = "filecloudapi" }]