86 lines
2.3 KiB
Go
86 lines
2.3 KiB
Go
package api
|
|
|
|
import (
|
|
"net/http"
|
|
"strconv"
|
|
|
|
"github.com/ente-io/museum/ente"
|
|
"github.com/ente-io/museum/pkg/controller"
|
|
"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"
|
|
)
|
|
|
|
// TrashHandler handles endpoints related to trash/restore etc
|
|
type TrashHandler struct {
|
|
Controller *controller.TrashController
|
|
}
|
|
|
|
// GetDiff returns the list of trashed files for the user that
|
|
// have changed sinceTime.
|
|
// Deprecated, shutdown when there's no traffic for 30 days
|
|
func (t *TrashHandler) GetDiff(c *gin.Context) {
|
|
enteApp := auth.GetApp(c)
|
|
|
|
userID := auth.GetUserID(c.Request.Header)
|
|
sinceTime, _ := strconv.ParseInt(c.Query("sinceTime"), 10, 64)
|
|
diff, hasMore, err := t.Controller.GetDiff(userID, sinceTime, false, enteApp)
|
|
if err != nil {
|
|
handler.Error(c, stacktrace.Propagate(err, ""))
|
|
return
|
|
}
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"diff": diff,
|
|
"hasMore": hasMore,
|
|
})
|
|
}
|
|
|
|
func (t *TrashHandler) GetDiffV2(c *gin.Context) {
|
|
enteApp := auth.GetApp(c)
|
|
|
|
userID := auth.GetUserID(c.Request.Header)
|
|
sinceTime, _ := strconv.ParseInt(c.Query("sinceTime"), 10, 64)
|
|
diff, hasMore, err := t.Controller.GetDiff(userID, sinceTime, true, enteApp)
|
|
if err != nil {
|
|
handler.Error(c, stacktrace.Propagate(err, ""))
|
|
return
|
|
}
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"diff": diff,
|
|
"hasMore": hasMore,
|
|
})
|
|
}
|
|
|
|
// Delete files permanently, queues up the file for deletion & free up the space based on file's object size
|
|
func (t *TrashHandler) Delete(c *gin.Context) {
|
|
userID := auth.GetUserID(c.Request.Header)
|
|
var request ente.DeleteTrashFilesRequest
|
|
if err := c.ShouldBindJSON(&request); err != nil {
|
|
handler.Error(c, stacktrace.Propagate(err, ""))
|
|
return
|
|
}
|
|
request.OwnerID = userID
|
|
err := t.Controller.Delete(c, request)
|
|
if err != nil {
|
|
handler.Error(c, stacktrace.Propagate(err, ""))
|
|
return
|
|
}
|
|
c.Status(http.StatusOK)
|
|
}
|
|
|
|
// Empty deletes eligible files from the trash
|
|
func (t *TrashHandler) Empty(c *gin.Context) {
|
|
userID := auth.GetUserID(c.Request.Header)
|
|
var request ente.EmptyTrashRequest
|
|
if err := c.ShouldBindJSON(&request); err != nil {
|
|
handler.Error(c, stacktrace.Propagate(err, ""))
|
|
return
|
|
}
|
|
err := t.Controller.EmptyTrash(c, userID, request)
|
|
if err != nil {
|
|
handler.Error(c, stacktrace.Propagate(err, ""))
|
|
return
|
|
}
|
|
c.Status(http.StatusOK)
|
|
}
|