52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
package v1
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/Xhofe/alist/alidrive"
|
|
"github.com/Xhofe/alist/conf"
|
|
"github.com/Xhofe/alist/server/controllers"
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/patrickmn/go-cache"
|
|
log "github.com/sirupsen/logrus"
|
|
)
|
|
|
|
// handle search request
|
|
func Search(c *gin.Context) {
|
|
if !conf.Conf.Server.Search {
|
|
c.JSON(200, controllers.MetaResponse(403, "Not allow search."))
|
|
return
|
|
}
|
|
var search alidrive.SearchReq
|
|
if err := c.ShouldBindJSON(&search); err != nil {
|
|
c.JSON(200, controllers.MetaResponse(400, "Bad Request"))
|
|
return
|
|
}
|
|
log.Debugf("search:%+v", search)
|
|
// cache
|
|
cacheKey := fmt.Sprintf("%s-%s", "s", search.Query)
|
|
if conf.Conf.Cache.Enable {
|
|
files, exist := conf.Cache.Get(cacheKey)
|
|
if exist {
|
|
log.Debugf("使用了缓存:%s", cacheKey)
|
|
c.JSON(200, controllers.DataResponse(files))
|
|
return
|
|
}
|
|
}
|
|
if search.Limit == 0 {
|
|
search.Limit = 50
|
|
}
|
|
// Search只支持0-100
|
|
//if conf.Conf.AliDrive.MaxFilesCount!=0 {
|
|
// search.Limit=conf.Conf.AliDrive.MaxFilesCount
|
|
//}
|
|
files, err := alidrive.Search(search.Query, search.Limit, search.OrderBy)
|
|
if err != nil {
|
|
c.JSON(200, controllers.MetaResponse(500, err.Error()))
|
|
return
|
|
}
|
|
if conf.Conf.Cache.Enable {
|
|
conf.Cache.Set(cacheKey, files, cache.DefaultExpiration)
|
|
}
|
|
c.JSON(200, controllers.DataResponse(files))
|
|
}
|