🐎 加入缓存
This commit is contained in:
68
server/controllers/list.go
Normal file
68
server/controllers/list.go
Normal file
@@ -0,0 +1,68 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/Xhofe/alist/alidrive"
|
||||
"github.com/Xhofe/alist/conf"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/patrickmn/go-cache"
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
func List(c *gin.Context) {
|
||||
var list ListReq
|
||||
if err := c.ShouldBindJSON(&list);err!=nil {
|
||||
c.JSON(200, metaResponse(400,"Bad Request"))
|
||||
return
|
||||
}
|
||||
log.Debugf("list:%v",list)
|
||||
// cache
|
||||
cacheKey:=fmt.Sprintf("%s-%s-%s","l",list.ParentFileId,list.Password)
|
||||
if conf.Conf.Cache.Enable {
|
||||
files,exist:=conf.Cache.Get(cacheKey)
|
||||
if exist {
|
||||
log.Debugf("使用了缓存:%s",cacheKey)
|
||||
c.JSON(200, dataResponse(files))
|
||||
return
|
||||
}
|
||||
}
|
||||
var (
|
||||
files *alidrive.Files
|
||||
err error
|
||||
)
|
||||
if list.Limit == 0 {
|
||||
list.Limit=50
|
||||
}
|
||||
if conf.Conf.AliDrive.MaxFilesCount!=0 {
|
||||
list.Limit=conf.Conf.AliDrive.MaxFilesCount
|
||||
}
|
||||
if list.ParentFileId == "root" {
|
||||
files,err=alidrive.GetRoot(list.Limit,list.Marker,list.OrderBy,list.OrderDirection)
|
||||
}else {
|
||||
files,err=alidrive.GetList(list.ParentFileId,list.Limit,list.Marker,list.OrderBy,list.OrderDirection)
|
||||
}
|
||||
if err!=nil {
|
||||
c.JSON(200, metaResponse(500,err.Error()))
|
||||
return
|
||||
}
|
||||
password:=alidrive.HasPassword(files)
|
||||
if password!="" && password!=list.Password {
|
||||
if list.Password=="" {
|
||||
c.JSON(200, metaResponse(401,"need password."))
|
||||
return
|
||||
}
|
||||
c.JSON(200, metaResponse(401,"wrong password."))
|
||||
return
|
||||
}
|
||||
paths,err:=alidrive.GetPaths(list.ParentFileId)
|
||||
if err!=nil {
|
||||
c.JSON(200, metaResponse(500,err.Error()))
|
||||
return
|
||||
}
|
||||
files.Paths=*paths
|
||||
files.Readme=alidrive.HasReadme(files)
|
||||
if conf.Conf.Cache.Enable {
|
||||
conf.Cache.Set(cacheKey,files,cache.DefaultExpiration)
|
||||
}
|
||||
c.JSON(200, dataResponse(files))
|
||||
}
|
Reference in New Issue
Block a user