reqwest_dav

Async WebDAV client for Rust built on tokio and reqwest

Library
Cargo
v0.3.3
42stars
Apache License 2.0

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
23/100Needs Attention
Development Activity4
Maintenance0
Community24
Maturity52
Momentum12

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
73/100Good
Architecture74
Code Quality72
Innovation70
Learning Curve85

reqwest_dav is an asynchronous WebDAV client for Rust, layered on top of the popular reqwest HTTP client and the tokio runtime. It gives Rust applications a small, typed API for talking to WebDAV servers such as Nextcloud, ownCloud, and other DAV-compatible storage backends.

The library covers the core WebDAV verbs — listing, uploading, downloading, moving, copying, deleting, and creating collections — and supports both Basic and Digest authentication. Built around a fluent ClientBuilder, it keeps setup terse while returning strongly typed responses you can serialize with serde.

What You Get

  • A fluent ClientBuilder for configuring host and authentication
  • Async file operations: get, put, move, copy, delete, mkcol, and list
  • Basic and Digest authentication support
  • Strongly typed responses that serialize cleanly with serde

Common Use Cases

  • Syncing files with Nextcloud or ownCloud from a Rust service
  • Uploading and downloading assets to any WebDAV-compatible storage
  • Listing and managing remote directory trees programmatically

Under The Hood

Architecture - The crate builds a thin protocol layer over reqwest. A ClientBuilder produces a Client holding the base host and an Auth variant (Basic or Digest); each method (list, get, put, mv, cp, delete, mkcol) issues the corresponding WebDAV HTTP request and parses the multistatus/response bodies into typed structs.

Tech Stack - Written in Rust and built on the tokio async runtime and reqwest for transport. It uses serde for (de)serializing responses and handles Digest authentication for servers that require it. The crate exposes an Error type covering transport and protocol failures.

Code Quality - The public surface is small and focused, and the README demonstrates the full workflow with a runnable async example. As a compact single-purpose crate it keeps its API narrow; it has accrued nearly a million downloads on crates.io, indicating solid real-world usage, though development activity is now low.

API Design - The builder pattern keeps client construction readable, and method names mirror the WebDAV verbs developers already know (mv, cp, mkcol), lowering the learning curve. Returning serde-serializable structs makes it easy to log or forward directory listings.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search