mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-03-06 08:17:42 -05:00
feat: add endpoint for getting drive items via id
This commit is contained in:
committed by
Ralf Haferkamp
parent
e48ac55034
commit
4404235efa
@@ -337,6 +337,53 @@ func (api DrivesDriveItemApi) DeleteDriveItem(w http.ResponseWriter, r *http.Req
|
||||
render.NoContent(w, r)
|
||||
}
|
||||
|
||||
// GetDriveItem get a drive item
|
||||
func (api DrivesDriveItemApi) GetDriveItem(w http.ResponseWriter, r *http.Request) {
|
||||
driveID, itemID, err := GetDriveAndItemIDParam(r, &api.logger)
|
||||
if err != nil {
|
||||
api.logger.Debug().Err(err).Msg(ErrInvalidDriveIDOrItemID.Error())
|
||||
ErrInvalidDriveIDOrItemID.Render(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
if !IsShareJail(driveID) {
|
||||
api.logger.Debug().Interface("driveID", driveID).Msg(ErrNotAShareJail.Error())
|
||||
ErrNotAShareJail.Render(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
shareID := ExtractShareIdFromResourceId(itemID)
|
||||
share, err := api.drivesDriveItemService.GetShare(r.Context(), shareID)
|
||||
if err != nil {
|
||||
api.logger.Debug().Err(err).Msg(ErrNoShares.Error())
|
||||
ErrNoShares.Render(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
availableShares, err := api.drivesDriveItemService.GetShares(r.Context(), share.GetShare().GetResourceId(), nil)
|
||||
if err != nil {
|
||||
api.logger.Debug().Err(err).Msg(ErrNoShares.Error())
|
||||
ErrNoShares.Render(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
driveItems, err := api.baseGraphService.CS3ReceivedSharesToDriveItems(r.Context(), availableShares)
|
||||
switch {
|
||||
case err != nil:
|
||||
break
|
||||
case len(driveItems) != 1:
|
||||
err = ErrDriveItemConversion
|
||||
}
|
||||
if err != nil {
|
||||
api.logger.Debug().Err(err).Msg(ErrDriveItemConversion.Error())
|
||||
ErrDriveItemConversion.Render(w, r)
|
||||
return
|
||||
}
|
||||
|
||||
render.Status(r, http.StatusOK)
|
||||
render.JSON(w, r, driveItems[0])
|
||||
}
|
||||
|
||||
// UpdateDriveItem updates a drive item, currently only the visibility of the share is updated
|
||||
func (api DrivesDriveItemApi) UpdateDriveItem(w http.ResponseWriter, r *http.Request) {
|
||||
driveID, itemID, err := GetDriveAndItemIDParam(r, &api.logger)
|
||||
|
||||
@@ -247,6 +247,7 @@ func NewService(opts ...Option) (Graph, error) { //nolint:maintidx
|
||||
})
|
||||
})
|
||||
r.Route("/items/{itemID}", func(r chi.Router) {
|
||||
r.Get("/", drivesDriveItemApi.GetDriveItem)
|
||||
r.Patch("/", drivesDriveItemApi.UpdateDriveItem)
|
||||
r.Delete("/", drivesDriveItemApi.DeleteDriveItem)
|
||||
r.Post("/invite", driveItemPermissionsApi.Invite)
|
||||
|
||||
Reference in New Issue
Block a user