mirror of
https://github.com/ente-io/ente.git
synced 2025-05-02 12:08:03 +00:00
58 lines
1.9 KiB
Go
58 lines
1.9 KiB
Go
package filedata
|
|
|
|
import (
|
|
"github.com/ente-io/museum/ente"
|
|
"github.com/ente-io/museum/ente/filedata"
|
|
"github.com/ente-io/museum/pkg/utils/auth"
|
|
"github.com/ente-io/stacktrace"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func (c *Controller) GetPreviewUrl(ctx *gin.Context, request filedata.GetPreviewURLRequest) (*string, error) {
|
|
if err := request.Validate(); err != nil {
|
|
return nil, err
|
|
}
|
|
actorUser := auth.GetUserID(ctx.Request.Header)
|
|
if err := c._checkMetadataReadOrWritePerm(ctx, actorUser, []int64{request.FileID}); err != nil {
|
|
return nil, err
|
|
}
|
|
data, err := c.Repo.GetFilesData(ctx, request.Type, []int64{request.FileID})
|
|
if err != nil {
|
|
return nil, stacktrace.Propagate(err, "")
|
|
}
|
|
if len(data) == 0 || data[0].IsDeleted {
|
|
return nil, stacktrace.Propagate(ente.ErrNotFound, "")
|
|
}
|
|
enteUrl, err := c.signedUrlGet(data[0].LatestBucket, data[0].GetS3FileObjectKey())
|
|
if err != nil {
|
|
return nil, stacktrace.Propagate(err, "")
|
|
}
|
|
return &enteUrl.URL, nil
|
|
}
|
|
|
|
func (c *Controller) PreviewUploadURL(ctx *gin.Context, request filedata.PreviewUploadUrlRequest) (*filedata.PreviewUploadUrl, error) {
|
|
if err := request.Validate(); err != nil {
|
|
return nil, err
|
|
}
|
|
actorUser := auth.GetUserID(ctx.Request.Header)
|
|
if err := c._checkPreviewWritePerm(ctx, request.FileID, actorUser); err != nil {
|
|
return nil, err
|
|
}
|
|
fileOwnerID, err := c.FileRepo.GetOwnerID(request.FileID)
|
|
if err != nil {
|
|
return nil, stacktrace.Propagate(err, "")
|
|
}
|
|
id := filedata.NewUploadID(request.Type)
|
|
// note: instead of the final url, give a temp url for upload purpose.
|
|
objectKey := filedata.ObjectKey(request.FileID, fileOwnerID, request.Type, &id)
|
|
bucketID := c.S3Config.GetBucketID(request.Type)
|
|
enteUrl, err := c.getUploadURL(bucketID, objectKey)
|
|
if err != nil {
|
|
return nil, stacktrace.Propagate(err, "")
|
|
}
|
|
return &filedata.PreviewUploadUrl{
|
|
ObjectID: id,
|
|
Url: enteUrl.URL,
|
|
}, nil
|
|
}
|