Design and implement WebDAV client #8

Open
opened 2026-01-27 07:08:44 +00:00 by maj · 0 comments
Owner

Implement a C++17 WebDAV client for communicating with Nextcloud servers using libcurl with mbedTLS.

Tasks

  • Create shared/include/nextcloud/webdav_client.hpp
  • Implement HTTP wrapper around libcurl
  • Add SSL/TLS support with mbedTLS
  • Implement WebDAV methods (PROPFIND, PUT, MKCOL, DELETE, MOVE)
  • Parse WebDAV XML responses using tinyxml2
  • Implement proper error handling
  • Add timeout and retry logic
  • Write unit tests with mocked HTTP responses
  • Document API in Doxygen format

Dependencies

  • libcurl 7.68+
  • mbedTLS 2.16+
  • tinyxml2 9.0+

Acceptance Criteria

  • All WebDAV methods implemented
  • SSL/TLS connections working
  • XML responses correctly parsed
  • Error handling comprehensive
  • Unit tests with >80% coverage
  • API documented
  • Works with test Nextcloud servers
Implement a C++17 WebDAV client for communicating with Nextcloud servers using libcurl with mbedTLS. ## Tasks - [ ] Create `shared/include/nextcloud/webdav_client.hpp` - [ ] Implement HTTP wrapper around libcurl - [ ] Add SSL/TLS support with mbedTLS - [ ] Implement WebDAV methods (PROPFIND, PUT, MKCOL, DELETE, MOVE) - [ ] Parse WebDAV XML responses using tinyxml2 - [ ] Implement proper error handling - [ ] Add timeout and retry logic - [ ] Write unit tests with mocked HTTP responses - [ ] Document API in Doxygen format ## Dependencies - libcurl 7.68+ - mbedTLS 2.16+ - tinyxml2 9.0+ ## Acceptance Criteria - [ ] All WebDAV methods implemented - [ ] SSL/TLS connections working - [ ] XML responses correctly parsed - [ ] Error handling comprehensive - [ ] Unit tests with >80% coverage - [ ] API documented - [ ] Works with test Nextcloud servers
maj added this to the Milestone 2: Shared Library (libnextcloud) milestone 2026-01-27 07:08:44 +00:00
maj added the networkinglibrarycorepriority:high labels 2026-01-27 07:08:44 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: maj/nextcloud-share#8