From 1fd4ebe53e511fbce277f3228022ae530bf6db11 Mon Sep 17 00:00:00 2001 From: Noah Hsu <i@nn.ci> Date: Sun, 7 Aug 2022 21:01:29 +0800 Subject: [PATCH] feat: add related objs while get obj --- server/handles/fsread.go | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/server/handles/fsread.go b/server/handles/fsread.go index d8bb74424a1..7300d62eb03 100644 --- a/server/handles/fsread.go +++ b/server/handles/fsread.go @@ -190,7 +190,9 @@ type FsGetOrLinkReq struct { type FsGetResp struct { ObjResp - RawURL string `json:"raw_url"` + RawURL string `json:"raw_url"` + Readme string `json:"readme"` + Related []string `json:"related"` } func FsGet(c *gin.Context) { @@ -242,6 +244,11 @@ func FsGet(c *gin.Context) { } } } + var related []string + sameLevelFiles, err := fs.List(c, stdpath.Dir(req.Path)) + if err == nil { + related = filterRelated(sameLevelFiles, obj) + } common.SuccessResp(c, FsGetResp{ ObjResp: ObjResp{ Name: obj.GetName(), @@ -250,10 +257,26 @@ func FsGet(c *gin.Context) { Modified: obj.ModTime(), Sign: common.Sign(obj), }, - RawURL: rawURL, + RawURL: rawURL, + Readme: getReadme(meta, req.Path), + Related: related, }) } +func filterRelated(objs []model.Obj, obj model.Obj) []string { + var related []string + nameWithoutExt := strings.TrimSuffix(obj.GetName(), stdpath.Ext(obj.GetName())) + for _, o := range objs { + if o.GetName() == obj.GetName() { + continue + } + if strings.HasPrefix(o.GetName(), nameWithoutExt) { + related = append(related, o.GetName()) + } + } + return related +} + type FsOtherReq struct { model.FsOtherArgs Password string `json:"password" form:"password"`