Let a Working Folder delete a basename.

CheckDNS needs that to Remove Domain without a second storage path.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-28 19:31:36 +02:00
co-authored by Cursor
parent 6560dffa69
commit 300484114f
4 changed files with 65 additions and 2 deletions
+35
View File
@@ -335,6 +335,41 @@ func (f webdavFolder) Write(name string, data []byte) error {
return fmt.Errorf("webdav PUT %s: %s", name, res.Status)
}
// Remove implements Folder via WebDAV DELETE.
func (f webdavFolder) Remove(name string) error {
u, err := f.childURL(name)
if err != nil {
return err
}
req, err := http.NewRequest(http.MethodDelete, u, nil)
if err != nil {
return err
}
for k, vs := range f.root.Cred.AuthHeaders() {
for _, v := range vs {
req.Header.Set(k, v)
}
}
res, err := f.root.client().Do(req)
if err != nil {
return err
}
defer res.Body.Close()
if _, err := io.Copy(io.Discard, res.Body); err != nil {
return err
}
switch res.StatusCode {
case http.StatusOK, http.StatusNoContent, http.StatusAccepted:
return nil
case http.StatusNotFound:
return fmt.Errorf("%w: %s", ErrNotExist, name)
case http.StatusForbidden, http.StatusUnauthorized:
return fmt.Errorf("%w", ErrForbidden)
default:
return fmt.Errorf("webdav DELETE %s: %s", name, res.Status)
}
}
// Exists implements Folder via WebDAV HEAD (falls back to GET when needed).
func (f webdavFolder) Exists(name string) (bool, error) {
u, err := f.childURL(name)