| package handles | |
| import ( | |
| "fmt" | |
| "strconv" | |
| "strings" | |
| "github.com/alist-org/alist/v3/internal/model" | |
| "github.com/alist-org/alist/v3/internal/op" | |
| "github.com/alist-org/alist/v3/server/common" | |
| "github.com/dlclark/regexp2" | |
| "github.com/gin-gonic/gin" | |
| log "github.com/sirupsen/logrus" | |
| ) | |
| func ListMetas(c *gin.Context) { | |
| var req model.PageReq | |
| if err := c.ShouldBind(&req); err != nil { | |
| common.ErrorResp(c, err, 400) | |
| return | |
| } | |
| req.Validate() | |
| log.Debugf("%+v", req) | |
| metas, total, err := op.GetMetas(req.Page, req.PerPage) | |
| if err != nil { | |
| common.ErrorResp(c, err, 500, true) | |
| return | |
| } | |
| common.SuccessResp(c, common.PageResp{ | |
| Content: metas, | |
| Total: total, | |
| }) | |
| } | |
| func CreateMeta(c *gin.Context) { | |
| var req model.Meta | |
| if err := c.ShouldBind(&req); err != nil { | |
| common.ErrorResp(c, err, 400) | |
| return | |
| } | |
| r, err := validHide(req.Hide) | |
| if err != nil { | |
| common.ErrorStrResp(c, fmt.Sprintf("%s is illegal: %s", r, err.Error()), 400) | |
| return | |
| } | |
| if err := op.CreateMeta(&req); err != nil { | |
| common.ErrorResp(c, err, 500, true) | |
| } else { | |
| common.SuccessResp(c) | |
| } | |
| } | |
| func UpdateMeta(c *gin.Context) { | |
| var req model.Meta | |
| if err := c.ShouldBind(&req); err != nil { | |
| common.ErrorResp(c, err, 400) | |
| return | |
| } | |
| r, err := validHide(req.Hide) | |
| if err != nil { | |
| common.ErrorStrResp(c, fmt.Sprintf("%s is illegal: %s", r, err.Error()), 400) | |
| return | |
| } | |
| if err := op.UpdateMeta(&req); err != nil { | |
| common.ErrorResp(c, err, 500, true) | |
| } else { | |
| common.SuccessResp(c) | |
| } | |
| } | |
| func validHide(hide string) (string, error) { | |
| rs := strings.Split(hide, "\n") | |
| for _, r := range rs { | |
| _, err := regexp2.Compile(r, regexp2.None) | |
| if err != nil { | |
| return r, err | |
| } | |
| } | |
| return "", nil | |
| } | |
| func DeleteMeta(c *gin.Context) { | |
| idStr := c.Query("id") | |
| id, err := strconv.Atoi(idStr) | |
| if err != nil { | |
| common.ErrorResp(c, err, 400) | |
| return | |
| } | |
| if err := op.DeleteMetaById(uint(id)); err != nil { | |
| common.ErrorResp(c, err, 500, true) | |
| return | |
| } | |
| common.SuccessResp(c) | |
| } | |
| func GetMeta(c *gin.Context) { | |
| idStr := c.Query("id") | |
| id, err := strconv.Atoi(idStr) | |
| if err != nil { | |
| common.ErrorResp(c, err, 400) | |
| return | |
| } | |
| meta, err := op.GetMetaById(uint(id)) | |
| if err != nil { | |
| common.ErrorResp(c, err, 500, true) | |
| return | |
| } | |
| common.SuccessResp(c, meta) | |
| } | |