Open
Conversation
**Added Missing Operations:**
- COPY - Server-side blob copying via WebDAV COPY method
- PROPERTIES - Retrieve blob metadata (ContentLength, ETag, LastModified)
- ENSURE-STORAGE-EXISTS - Initialize WebDAV directory structure
- SIGN - Generate pre-signed URLs with HMAC-SHA256
- DELETE-RECURSIVE - Delete all blobs matching a prefix
**Structural Changes:**
- Split into two-layer architecture like other providers (S3, Azure, etc.)
- client.go: High-level DavBlobstore implementing storage.Storager interface
- storage_client.go: Low-level StorageClient handling HTTP/WebDAV operations
19fa8b5 to
a69e251
Compare
a69e251 to
93b80d1
Compare
serdarozerr
suggested changes
Mar 13, 2026
e6899c3 to
230cd5a
Compare
230cd5a to
cc66878
Compare
serdarozerr
reviewed
Mar 16, 2026
4e7c568 to
9a45943
Compare
serdarozerr
reviewed
Mar 17, 2026
serdarozerr
suggested changes
Mar 17, 2026
serdarozerr
reviewed
Mar 17, 2026
…ect names, not basenames.Change low-level Exists to (bool, error), matching Azure/GCS/S3.
serdarozerr
reviewed
Mar 19, 2026
3 tasks
Extend WebDAV signer to support both BOSH-compatible SHA256 HMAC signing and CAPI-compatible MD5 signing via optional signing_method config field. - Add SigningMethod field to config (default: "sha256") - Implement generateSHA256SignedURL() for BOSH (/signed/ paths) - Implement generateMD5SignedURL() for CAPI (/read/, /write/ paths) - Add HEAD verb support - Improve WebDAV compatibility with PROPFIND - Simplify blob path handling for CCNG pre-partitioned IDs - Add comprehensive tests for both signing methods
1. Simple blob IDs (like my-blob) get stored with hash-prefix directory structure (8c/my-blob) 2. Pre-partitioned blob IDs (like ru/by/ruby-buildpack from CCNG) are stored as-is 3. Both PUT and COPY operations correctly create parent directories by using the built path (with hash prefix) when calling ensureObjectParentsExist
Preserve endpoint base paths when constructing signed URLs to ensure
directory keys (cc-droplets, cc-packages, etc.) are included in the
final URL path. The signer now combines:
- Path prefix (/signed/, /read/, or /write/)
- Endpoint base path (directory key from config)
- Blob ID with hash prefix
This ensures storage-cli and fog/webdav clients store blobs at
identical physical locations for backward compatibility.
Also fixed DAV integration tests to validate signed URL generation
without requiring nginx infrastructure in the test environment.
5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Added Missing Operations:
Structural Changes: