diff --git a/services/graph/pkg/service/v0/driveitems_special.go b/services/graph/pkg/service/v0/driveitems_special.go index 55e602c0f5..09b62ceb43 100644 --- a/services/graph/pkg/service/v0/driveitems_special.go +++ b/services/graph/pkg/service/v0/driveitems_special.go @@ -27,8 +27,13 @@ const RecycleBinSpecialFolderName = "recyclebin" func (g Graph) GetDriveSpecial(w http.ResponseWriter, r *http.Request) { g.logger.Debug().Msg("Calling GetDriveSpecial") - driveID, ok := parseSpecialParams(w, r) - if !ok { + driveID, err := parseIDParam(r, "driveID") + if err != nil { + errorcode.RenderError(w, r, err) + return + } + if chi.URLParam(r, "specialName") != RecycleBinSpecialFolderName { + errorcode.InvalidRequest.Render(w, r, http.StatusBadRequest, "unknown special folder") return } @@ -88,8 +93,13 @@ func (g Graph) findRecycleItem(w http.ResponseWriter, r *http.Request, driveID * func (g Graph) ListDriveSpecialChildren(w http.ResponseWriter, r *http.Request) { g.logger.Debug().Msg("Calling ListDriveSpecialChildren") - driveID, ok := parseSpecialParams(w, r) - if !ok { + driveID, err := parseIDParam(r, "driveID") + if err != nil { + errorcode.RenderError(w, r, err) + return + } + if chi.URLParam(r, "specialName") != RecycleBinSpecialFolderName { + errorcode.InvalidRequest.Render(w, r, http.StatusBadRequest, "unknown special folder") return } @@ -121,19 +131,6 @@ func (g Graph) listRecycleChildren(w http.ResponseWriter, r *http.Request, drive return files, true } -func parseSpecialParams(w http.ResponseWriter, r *http.Request) (storageprovider.ResourceId, bool) { - driveID, err := parseIDParam(r, "driveID") - if err != nil { - errorcode.RenderError(w, r, err) - return storageprovider.ResourceId{}, false - } - if chi.URLParam(r, "specialName") != RecycleBinSpecialFolderName { - errorcode.InvalidRequest.Render(w, r, http.StatusBadRequest, "unknown special folder") - return storageprovider.ResourceId{}, false - } - return driveID, true -} - // specialFolderKey returns the recycle key addressed by the colon path form, "" for the trash root func specialFolderKey(r *http.Request) string { p, _ := graphm.SpecialFolderPath(r.Context()) diff --git a/services/graph/pkg/service/v0/driveitems_trash.go b/services/graph/pkg/service/v0/driveitems_trash.go index f98e36d8bc..b07cb9a666 100644 --- a/services/graph/pkg/service/v0/driveitems_trash.go +++ b/services/graph/pkg/service/v0/driveitems_trash.go @@ -188,8 +188,13 @@ func (g Graph) PermanentDeleteDriveItem(w http.ResponseWriter, r *http.Request) func (g Graph) DeleteDriveSpecialItem(w http.ResponseWriter, r *http.Request) { g.logger.Debug().Msg("Calling DeleteDriveSpecialItem") - driveID, ok := parseSpecialParams(w, r) - if !ok { + driveID, err := parseIDParam(r, "driveID") + if err != nil { + errorcode.RenderError(w, r, err) + return + } + if chi.URLParam(r, "specialName") != RecycleBinSpecialFolderName { + errorcode.InvalidRequest.Render(w, r, http.StatusBadRequest, "unknown special folder") return } itemID, ok := parseTrashItemID(w, r) @@ -205,8 +210,13 @@ func (g Graph) DeleteDriveSpecialItem(w http.ResponseWriter, r *http.Request) { func (g Graph) EmptyDriveSpecial(w http.ResponseWriter, r *http.Request) { g.logger.Debug().Msg("Calling EmptyDriveSpecial") - driveID, ok := parseSpecialParams(w, r) - if !ok { + driveID, err := parseIDParam(r, "driveID") + if err != nil { + errorcode.RenderError(w, r, err) + return + } + if chi.URLParam(r, "specialName") != RecycleBinSpecialFolderName { + errorcode.InvalidRequest.Render(w, r, http.StatusBadRequest, "unknown special folder") return }