(c *gin.Context, req *ArchiveListReq, user *model.User)
| 174 | } |
| 175 | |
| 176 | func FsArchiveList(c *gin.Context, req *ArchiveListReq, user *model.User) { |
| 177 | if !user.CanReadArchives() { |
| 178 | common.ErrorResp(c, errs.PermissionDenied, 403) |
| 179 | return |
| 180 | } |
| 181 | reqPath, err := user.JoinPath(req.Path) |
| 182 | if err != nil { |
| 183 | common.ErrorResp(c, err, 403) |
| 184 | return |
| 185 | } |
| 186 | meta, err := op.GetNearestMeta(reqPath) |
| 187 | if err != nil && !errors.Is(errors.Cause(err), errs.MetaNotFound) { |
| 188 | common.ErrorResp(c, err, 500, true) |
| 189 | return |
| 190 | } |
| 191 | common.GinAppendValues(c, conf.MetaKey, meta) |
| 192 | if !common.CanAccess(user, meta, reqPath, req.Password) { |
| 193 | common.ErrorStrResp(c, "password is incorrect or you have no permission", 403) |
| 194 | return |
| 195 | } |
| 196 | objs, err := fs.ArchiveList(c.Request.Context(), reqPath, model.ArchiveListArgs{ |
| 197 | ArchiveInnerArgs: model.ArchiveInnerArgs{ |
| 198 | ArchiveArgs: model.ArchiveArgs{ |
| 199 | LinkArgs: model.LinkArgs{ |
| 200 | Header: c.Request.Header, |
| 201 | Type: c.Query("type"), |
| 202 | }, |
| 203 | Password: req.ArchivePass, |
| 204 | }, |
| 205 | InnerPath: utils.FixAndCleanPath(req.InnerPath), |
| 206 | }, |
| 207 | Refresh: req.Refresh, |
| 208 | }) |
| 209 | if err != nil { |
| 210 | if errors.Is(err, errs.WrongArchivePassword) { |
| 211 | common.ErrorResp(c, err, 202) |
| 212 | } else { |
| 213 | common.ErrorResp(c, err, 500) |
| 214 | } |
| 215 | return |
| 216 | } |
| 217 | total, objs := pagination(objs, &req.PageReq) |
| 218 | ret, _ := utils.SliceConvert(objs, func(src model.Obj) (ObjResp, error) { |
| 219 | return toObjsRespWithoutSignAndThumb(src), nil |
| 220 | }) |
| 221 | common.SuccessResp(c, common.PageResp{ |
| 222 | Content: ret, |
| 223 | Total: int64(total), |
| 224 | }) |
| 225 | } |
| 226 | |
| 227 | type ArchiveDecompressReq struct { |
| 228 | SrcDir string `json:"src_dir" form:"src_dir"` |
no test coverage detected