MCPcopy Create free account
hub / github.com/OpenListTeam/OpenList / FsArchiveList

Function FsArchiveList

server/handles/archive.go:176–225  ·  view source on GitHub ↗
(c *gin.Context, req *ArchiveListReq, user *model.User)

Source from the content-addressed store, hash-verified

174}
175
176func 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
227type ArchiveDecompressReq struct {
228 SrcDir string `json:"src_dir" form:"src_dir"`

Callers 1

FsArchiveListSplitFunction · 0.85

Calls 13

ErrorRespFunction · 0.92
GetNearestMetaFunction · 0.92
GinAppendValuesFunction · 0.92
CanAccessFunction · 0.92
ErrorStrRespFunction · 0.92
ArchiveListFunction · 0.92
FixAndCleanPathFunction · 0.92
SliceConvertFunction · 0.92
SuccessRespFunction · 0.92
paginationFunction · 0.85
CanReadArchivesMethod · 0.80

Tested by

no test coverage detected