Refactor
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
"github.com/ente-io/museum/pkg/controller"
|
||||
"github.com/ente-io/museum/pkg/controller/cast"
|
||||
"github.com/ente-io/museum/pkg/controller/collections"
|
||||
"github.com/ente-io/museum/pkg/utils/auth"
|
||||
"github.com/ente-io/museum/pkg/utils/handler"
|
||||
"github.com/ente-io/stacktrace"
|
||||
"github.com/gin-gonic/gin"
|
||||
@@ -136,7 +137,8 @@ func (h *CastHandler) getFileForType(c *gin.Context, objectType ente.ObjectType)
|
||||
handler.Error(c, stacktrace.Propagate(ente.ErrBadRequest, ""))
|
||||
return
|
||||
}
|
||||
url, err := h.FileCtrl.GetCastFileUrl(c, fileID, objectType)
|
||||
castCtx := auth.GetCastCtx(c)
|
||||
url, err := h.FileCtrl.GetPublicOrCastFileURL(c, fileID, objectType, castCtx.CollectionID)
|
||||
if err != nil {
|
||||
handler.Error(c, stacktrace.Propagate(err, ""))
|
||||
return
|
||||
|
||||
@@ -163,7 +163,8 @@ func (h *PublicCollectionHandler) getFileForType(c *gin.Context, objectType ente
|
||||
handler.Error(c, stacktrace.Propagate(ente.ErrBadRequest, ""))
|
||||
return
|
||||
}
|
||||
url, err := h.FileCtrl.GetPublicFileURL(c, fileID, objectType)
|
||||
accessContext := auth.MustGetPublicAccessContext(c)
|
||||
url, err := h.FileCtrl.GetPublicOrCastFileURL(c, fileID, objectType, accessContext.CollectionID)
|
||||
if err != nil {
|
||||
handler.Error(c, stacktrace.Propagate(err, ""))
|
||||
return
|
||||
|
||||
@@ -376,30 +376,24 @@ func (c *FileController) CleanUpStaleCollectionFiles(userID int64, fileID int64)
|
||||
|
||||
}
|
||||
|
||||
// GetPublicFileURL verifies permissions and returns a presigned url to the requested file
|
||||
func (c *FileController) GetPublicFileURL(ctx *gin.Context, fileID int64, objType ente.ObjectType) (string, error) {
|
||||
accessContext := auth.MustGetPublicAccessContext(ctx)
|
||||
accessible, err := c.CollectionRepo.DoesFileExistInCollections(fileID, []int64{accessContext.CollectionID})
|
||||
if err != nil {
|
||||
// GetPublicOrCastFileURL verifies permissions and returns a presigned url to the requested file
|
||||
func (c *FileController) GetPublicOrCastFileURL(ctx *gin.Context, fileID int64, objType ente.ObjectType, collectionID int64) (string, error) {
|
||||
// validate that the given fileID is present in the corresponding collection for public album or cast session
|
||||
if err := c.DoesFileExistInCollection(ctx, fileID, collectionID); err != nil {
|
||||
return "", stacktrace.Propagate(err, "")
|
||||
}
|
||||
if !accessible {
|
||||
return "", stacktrace.Propagate(ente.ErrPermissionDenied, "")
|
||||
}
|
||||
return c.getSignedURLForType(ctx, fileID, objType)
|
||||
}
|
||||
|
||||
// GetCastFileUrl verifies permissions and returns a presigned url to the requested file
|
||||
func (c *FileController) GetCastFileUrl(ctx *gin.Context, fileID int64, objType ente.ObjectType) (string, error) {
|
||||
castCtx := auth.GetCastCtx(ctx)
|
||||
accessible, err := c.CollectionRepo.DoesFileExistInCollections(fileID, []int64{castCtx.CollectionID})
|
||||
func (c *FileController) DoesFileExistInCollection(ctx *gin.Context, fileID int64, collectionID int64) error {
|
||||
accessible, err := c.CollectionRepo.DoesFileExistInCollections(fileID, []int64{collectionID})
|
||||
if err != nil {
|
||||
return "", stacktrace.Propagate(err, "")
|
||||
return stacktrace.Propagate(err, "")
|
||||
}
|
||||
if !accessible {
|
||||
return "", stacktrace.Propagate(ente.ErrPermissionDenied, "")
|
||||
return stacktrace.Propagate(ente.ErrPermissionDenied, "")
|
||||
}
|
||||
return c.getSignedURLForType(ctx, fileID, objType)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *FileController) getSignedURLForType(ctx *gin.Context, fileID int64, objType ente.ObjectType) (string, error) {
|
||||
|
||||
Reference in New Issue
Block a user