diff --git a/server/ente/filedata/filedata.go b/server/ente/filedata/filedata.go index 2ddc373f16..f9cfccd28e 100644 --- a/server/ente/filedata/filedata.go +++ b/server/ente/filedata/filedata.go @@ -72,3 +72,15 @@ type S3FileMetadata struct { DecryptionHeader string `json:"header"` Client string `json:"client"` } + +type GetPreviewUrlRequest struct { + FileID int64 `form:"fileID" binding:"required"` + Type ente.ObjectType `form:"type" binding:"required"` +} + +func (g *GetPreviewUrlRequest) Validate() error { + if g.Type != ente.PreviewVideo && g.Type != ente.PreviewImage { + return ente.NewBadRequestWithMessage(fmt.Sprintf("unsupported object type %s", g.Type)) + } + return nil +} diff --git a/server/ente/filedata/path.go b/server/ente/filedata/path.go index 5dd4f616ef..fce63bad09 100644 --- a/server/ente/filedata/path.go +++ b/server/ente/filedata/path.go @@ -25,6 +25,17 @@ func AllObjects(fileID int64, ownerID int64, oType ente.ObjectType) []string { } } +func PreviewUrl(fileID int64, ownerID int64, oType ente.ObjectType) string { + switch oType { + case ente.PreviewVideo: + return previewVideoPath(fileID, ownerID) + case ente.PreviewImage: + return previewImagePath(fileID, ownerID) + default: + panic(fmt.Sprintf("object type %s is not supported", oType)) + } +} + func previewVideoPath(fileID int64, ownerID int64) string { return fmt.Sprintf("%s%s", BasePrefix(fileID, ownerID), string(ente.PreviewVideo)) }