A minimal, robust command-line client for interacting with a WebDAV server over plain HTTP with no authentication.
Project description
simple-dav-client
A minimal, robust command-line client for interacting with a WebDAV server over plain HTTP with no authentication.
Features
- List (
ls): List remote files or directories. - Upload (
put): Upload local files or directories (recursively) to a remote directory. - Download (
get): Download remote files or directories (recursively) to a local directory. - Create (
mkdir): Create directories on the remote server (optionally recursively). - Remove (
rm): Delete remote files or directories (recursively).
Design
This tool is designed for maximum clarity and correctness:
- ✅ No Authentication / No HTTPS: This client uses only HTTP (not HTTPS), and does not support authentication, cookies, or custom headers. Simplicity was prioritized for trusted, local/test servers.
- ✅ Fail Fast & Loudly: If any network, connection, or server error occurs, the tool will abort and display an error message. No retry, fallback, or silent handling is implemented by design.
- ✅ Path Tokenization: All local and remote paths are tokenized using the
fspathverbslibrary, and all internal APIs use tokenized paths. This ensures reliable, traversal-safe handling and robust operation across platforms and server configurations. - ✅ Recursive Operations: Both uploads and downloads automatically recurse into directories, preserving
directory hierarchies for both local-to-remote and remote-to-local transmissions.
- This client uses the classic Command Pattern.
- All uploads (
put) and downloads (get) are performed by first compiling a list ofPutActionandGetActionoperation objects that describe exactly what needs to be done, then executing in strict order. - This allows for clean error reporting, separation of planning and execution, and makes future extensions ( logging, dry runs, previews, etc.) straightforward.
- All uploads (
- This client uses the classic Command Pattern.
- ✅ Strong Code Separation: Command-line parsing/dispatch is cleanly separated from the core logic for clarity and maintainability.
Installation
pip install simple-dav-client
After installation, run it as simple_dav_client.
Usage
List a remote file or directory:
simple_dav_client --host localhost --port 8080 ls /remote/file-or-directory
Download a remote file or directory to ./local:
simple_dav_client --host localhost --port 8080 get -O ./local /remote/file-or-directory
Upload a local file or directory to /remote:
simple_dav_client --host localhost --port 8080 put -O /remote ./local/file-or-directory
Create a remote directory (including parent directories):
simple_dav_client --host localhost --port 8080 mkdir -p /remote/child-directory
Remove a remote file or directory:
simple_dav_client --host localhost --port 8080 rm /remote/file-or-directory
Contributing
Contributions are welcome! Please submit pull requests or open issues on the GitHub repository.
License
This project is licensed under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file simple_dav_client-0.1.0a3.tar.gz.
File metadata
- Download URL: simple_dav_client-0.1.0a3.tar.gz
- Upload date:
- Size: 9.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad61a35484d77ac48e0ccaa5c48d066e34ded15f8422307c4ca7a3d29205a492
|
|
| MD5 |
363470285fcc8b682cbb9e1d586cbb3b
|
|
| BLAKE2b-256 |
a1cfb4a1618d41b6534c57b5c976c9e0d8fc79963c48378470f086a9de3315e4
|
File details
Details for the file simple_dav_client-0.1.0a3-py2.py3-none-any.whl.
File metadata
- Download URL: simple_dav_client-0.1.0a3-py2.py3-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
978d208efa526d7618a839059028505a88b9f68b083c142276de17b7914f295d
|
|
| MD5 |
1dec36434094fd63b77076db54a3c81e
|
|
| BLAKE2b-256 |
43a4f9e8e4992b60dd742bb9d15f343be02c158f724d2e732bed84157736d679
|