android-library
android-library copied to clipboard
More generic target file in DownloadRemoteFileOperation constructor
Hi, The DownloadRemoteFileOperation currently takes (String remotePath, String localFolderPath) as parameters. These are then concatenated in getTmpPath(). As a result the temp file directory structure matches the path in remotePath. This is not very convenient if you want to download to a different directory structure (as I do). If there were a new constructor (String remotePath, File tempFile) that would simply take the temp file as defined by the using client, it would be much more generic. The existing constructor can be expressed in this by using DownloadRemoteFileOperation(remotePath, new File(localFolderPath, remotePath)); I thik this would make the interface much more generic to use and would save me from copying the class for just this modification.
Thanks in advance,
@tobiasKaminsky what do you think, since you probably know more about the lib than I do?
@gerritbeuze sorry for coming back this late. I like the idea. Do you have time to adjust this and create a PR?
I hit the same issue. Is it acceptable to make this change non-backward compatible? I.e force the API user to provide full local path to the file (which will be created) instead of folder? Such change would make code simple: constructor would be
public DownloadRemoteFileOperation(String remotePath, String localFilePath)
instead of public DownloadRemoteFileOperation(String remotePath, String localFolderPath)
It is possible to override run()
in a class inheriting from DownloadRemoteFileOperation
but mGet is inaccessible when I try to return a result:
result = RemoteOperationResult(isSuccess(status), /*this.mGet*/ null)
The current state of this library/class is to only download the file and store it into a temp place. Once this is succeeded the tempFile can be moved by the calling app to the desired location, like you can see here with NC files app: https://github.com/nextcloud/android/blob/43ce90355993d8937377336a02de160c3bd5ebe4/src/main/java/com/owncloud/android/operations/DownloadFileOperation.java#L172-L183
Especially for failing downloads, it is a good idea to have it downloaded first into a temp folder, or?