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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user