Skip to content

Conversation

@onnimonni
Copy link

Hey!

I really could use webdav support and prepared this PR together with Claude. Hopefully you don't see this as spam but as something that would expand usage of DuckDB to new places.

I tried to follow the same integration testing patterns as is currently used with S3 and minio.

I'm not super happy on how it currently replaces the http method based on the special header and would be happy to get feedback if there would be a different better way.

Thanks for duckdb and hopefully this is useful addition. Fixes #160.

I tested it and it worked wonderfully with parquet files in Hetzner storage boxes and because WebDAV supports the http range requests it's much better than using Samba or SFTP.

onnimonni and others added 3 commits November 10, 2025 13:39
Implement WebDAV filesystem to support HTTP-based file operations including:
- WebDAV filesystem class with PROPFIND, MKCOL, and standard HTTP methods
- Authentication via Basic Auth with username/password secrets
- File globbing support using PROPFIND for directory listing
- Pattern matching for wildcards (*, [..], **) similar to S3
- Support for storagebox:// protocol for Hetzner Storage Box
- Custom HTTP method support (PROPFIND) in both curl and httplib clients
- Comprehensive secret management for WebDAV credentials

The implementation follows S3's globbing pattern, providing consistent behavior
across different storage backends. Custom HTTP methods are supported by extending
both HTTP clients to check for X-DuckDB-HTTP-Method in extra_headers.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Add comprehensive test suite for WebDAV filesystem functionality using bytemark/webdav Docker container. The test infrastructure includes:

- Docker Compose configuration with separate setup container
- Scripts to start, stop, and configure the test server
- Comprehensive test suite with 86 assertions covering:
  - Authentication with username/password
  - Reading text and CSV files
  - Globbing patterns (*.csv, **/*.csv)
  - Hive-style partitioning
  - Write operations
- Complete documentation with troubleshooting guide

The test server runs on localhost:9100 with ephemeral storage, eliminating the need for cleanup between test runs.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@onnimonni
Copy link
Author

I tried to initially look for CONTRIBUTING.md and if it prohibits LLM usage.

Sorry I didn't notice the CONTRIBUTING.md which probably also applies to this extension.

I will close this PR now and look for making a community plugin instead.

@onnimonni onnimonni closed this Nov 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add support for reading webdav based files like Hetzner storage boxes

1 participant