feat: add related objs while get obj

pull/1604/head
Noah Hsu 2022-08-07 21:01:29 +08:00
parent 2e8322e99b
commit 1fd4ebe53e
1 changed files with 25 additions and 2 deletions

View File

@ -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"`