[PR #19] [MERGED] feat: add Nextcloud connector #83

Closed
opened 2026-10-18 21:14:14 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/open-webui/oikb/pull/19
Author: @glonor
Created: 6/3/2026
Status: ✅ Merged
Merged: 6/12/2026
Merged by: @tjbck

Base: main ← Head: feature/nextcloud-connector


📝 Commits (3)

  • ee8dc12 feat: add Nextcloud connector
  • 53cdc8d refactor: extract internal WebDAV client
  • 04a8190 fix: guard recursive WebDAV walk

📊 Changes

4 files changed (+365 additions, -5 deletions)

View changed files

📝 README.md (+4 -3)
📝 docs/guide.md (+30 -2)
📝 src/oikb/cli.py (+5 -0)
➕ src/oikb/connectors/nextcloud.py (+326 -0)

📄 Description

Adds a nextcloud: connector using WebDAV and Nextcloud app-password/basic auth.

Related to #11.

The connector supports:

  • NEXTCLOUD_URL, NEXTCLOUD_USER, NEXTCLOUD_PASSWORD
  • recursive folder sync via WebDAV PROPFIND
  • OCS lookup to resolve the authenticated user's actual Nextcloud id before building WebDAV file paths
  • ETag-based incremental checksums
  • nested folder preservation through manifest path

The WebDAV walking/downloading logic is kept as an internal helper for now so this PR only exposes nextcloud:. If there is interest in a generic webdav: source later, this helper can be moved into a shared connector module and reused by other WebDAV-backed services.

Example:

oikb sync "nextcloud:/Documents" --kb-id <kb-id>

Testing

  • python -m compileall src/oikb/connectors/nextcloud.py src/oikb/cli.py
  • Live-tested against Nextcloud 31.0.4

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/open-webui/oikb/pull/19 **Author:** [@glonor](https://github.com/glonor) **Created:** 6/3/2026 **Status:** ✅ Merged **Merged:** 6/12/2026 **Merged by:** [@tjbck](https://github.com/tjbck) **Base:** `main` ← **Head:** `feature/nextcloud-connector` --- ### 📝 Commits (3) - [`ee8dc12`](https://github.com/open-webui/oikb/commit/ee8dc1208a8e02ee6a2bb91d81a765de30886404) feat: add Nextcloud connector - [`53cdc8d`](https://github.com/open-webui/oikb/commit/53cdc8d985d0ee785f12c27a3fa5a1fd5b9a51ed) refactor: extract internal WebDAV client - [`04a8190`](https://github.com/open-webui/oikb/commit/04a819040eae3884076650f711c0e175bf97b5c6) fix: guard recursive WebDAV walk ### 📊 Changes **4 files changed** (+365 additions, -5 deletions) <details> <summary>View changed files</summary> 📝 `README.md` (+4 -3) 📝 `docs/guide.md` (+30 -2) 📝 `src/oikb/cli.py` (+5 -0) ➕ `src/oikb/connectors/nextcloud.py` (+326 -0) </details> ### 📄 Description Adds a `nextcloud:` connector using WebDAV and Nextcloud app-password/basic auth. Related to #11. The connector supports: - `NEXTCLOUD_URL`, `NEXTCLOUD_USER`, `NEXTCLOUD_PASSWORD` - recursive folder sync via WebDAV `PROPFIND` - OCS lookup to resolve the authenticated user's actual Nextcloud id before building WebDAV file paths - ETag-based incremental checksums - nested folder preservation through manifest `path` The WebDAV walking/downloading logic is kept as an internal helper for now so this PR only exposes `nextcloud:`. If there is interest in a generic `webdav:` source later, this helper can be moved into a shared connector module and reused by other WebDAV-backed services. Example: ```bash oikb sync "nextcloud:/Documents" --kb-id <kb-id> ``` ## Testing - `python -m compileall src/oikb/connectors/nextcloud.py src/oikb/cli.py` - Live-tested against Nextcloud 31.0.4 --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-18 21:14:14 +00:00
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
open-webui/oikb#83
No description provided.