chore: 初始化 Cloudreve 源码仓库
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/cloudreve/Cloudreve/v4/application/dependency"
|
||||
"github.com/cloudreve/Cloudreve/v4/pkg/filemanager/fs/dbfs"
|
||||
"github.com/cloudreve/Cloudreve/v4/pkg/serializer"
|
||||
"github.com/cloudreve/Cloudreve/v4/pkg/util"
|
||||
"github.com/cloudreve/Cloudreve/v4/routers/controllers"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/gofrs/uuid"
|
||||
)
|
||||
|
||||
// UrisService is a wrapper for service supports batch file operations
|
||||
type UrisService interface {
|
||||
GetUris() []string
|
||||
}
|
||||
|
||||
// ValidateBatchFileCount validates if the batch file count is within the limit
|
||||
func ValidateBatchFileCount(dep dependency.Dep, ctxKey interface{}) gin.HandlerFunc {
|
||||
settings := dep.SettingProvider()
|
||||
return func(c *gin.Context) {
|
||||
uris := controllers.ParametersFromContext[UrisService](c, ctxKey)
|
||||
limit := settings.MaxBatchedFile(c)
|
||||
if len((uris).GetUris()) > limit {
|
||||
c.JSON(200, serializer.ErrWithDetails(
|
||||
c,
|
||||
serializer.CodeTooManyUris,
|
||||
fmt.Sprintf("Maximum allowed batch size: %d", limit),
|
||||
nil,
|
||||
))
|
||||
c.Abort()
|
||||
return
|
||||
}
|
||||
|
||||
c.Next()
|
||||
}
|
||||
}
|
||||
|
||||
// ContextHint parses the context hint header and set it to context
|
||||
func ContextHint() gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
if c.GetHeader(dbfs.ContextHintHeader) != "" {
|
||||
util.WithValue(c, dbfs.ContextHintCtxKey{}, uuid.FromStringOrNil(c.GetHeader(dbfs.ContextHintHeader)))
|
||||
}
|
||||
|
||||
c.Next()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user