This PR is the final change, where all backends are now purely implemented with async interfaces.
The code changes here replace the LIST call with an async version. This affect all backends (and then some) but the changes are mostly mechanical rewrites of the code.
In many places, the backeds were already prepared for async output, in other some glue was needed.
To reduce the scope of this change, some backends simply report a synchronous result as an async list.
- Add support for subfolders
- Implement robust file selection using fileID for Download/Delete operations instead of concatenation of path + filename
- Improved validation for folder existence during backend connectivity tests supporting subfolders.
This issue does not affect the pCloud backend per se and its functioning as expected.
The issue is related to a symptom the BackendTester revealed as discussed here:
https://github.com/duplicati/duplicati/pull/5709
It turns out the backends should assume the caller has set the input stream at the correct position and take it from there.
Therefore the fix is simply to remove the .Position = 0; which was well intended as a way to make sure the stream was at the beginning, but thats not the pattern to follow when integrating backends.
A future blog post/tutorial on new backend integrations will mention these premises.