Skip to content

Commit d380905

Browse files
committed
feat: resolveMetaObj
1 parent cc631a2 commit d380905

1 file changed

Lines changed: 41 additions & 10 deletions

File tree

server/handles/fsread.go

Lines changed: 41 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ type FsListResp struct {
5151
Total int64 `json:"total"`
5252
Readme string `json:"readme"`
5353
Header string `json:"header"`
54+
ReadmeObj *ObjResp `json:"readme_obj"`
55+
HeaderObj *ObjResp `json:"header_obj"`
5456
Write bool `json:"write"`
5557
Provider string `json:"provider"`
5658
Permissions int32 `json:"permissions"` // ACL permissions bitmask
@@ -120,13 +122,38 @@ func FsList(c *gin.Context, req *ListReq, user *model.User) {
120122
Total: int64(total),
121123
Readme: getReadme(meta, reqPath),
122124
Header: getHeader(meta, reqPath),
125+
ReadmeObj: resolveMetaObj(c, getReadme(meta, reqPath), req.Password),
126+
HeaderObj: resolveMetaObj(c, getHeader(meta, reqPath), req.Password),
123127
Write: user.CanWrite() || common.CanWrite(meta, reqPath),
124128
Provider: provider,
125129
Permissions: common.GetACLPermissions(c, reqPath),
126130
DirectUploadTools: directUploadTools,
127131
})
128132
}
129133

134+
func resolveMetaObj(c *gin.Context, path string, password string) *ObjResp {
135+
if !strings.HasPrefix(path, "/") {
136+
return nil
137+
}
138+
obj, err := fs.Get(c.Request.Context(), path, &fs.GetArgs{})
139+
if err != nil {
140+
return nil
141+
}
142+
parent := stdpath.Dir(path)
143+
meta, _ := op.GetNearestMeta(path)
144+
return &ObjResp{
145+
Name: obj.GetName(),
146+
Size: obj.GetSize(),
147+
IsDir: obj.IsDir(),
148+
Modified: obj.ModTime(),
149+
Created: obj.CreateTime(),
150+
HashInfoStr: obj.GetHash().String(),
151+
HashInfo: obj.GetHash().Export(),
152+
Sign: common.Sign(obj, parent, isEncrypt(meta, path)),
153+
Type: utils.GetObjType(obj.GetName(), obj.IsDir()),
154+
}
155+
}
156+
130157
func FsDirs(c *gin.Context) {
131158
var req DirReq
132159
if err := c.ShouldBind(&req); err != nil {
@@ -257,11 +284,13 @@ type FsGetReq struct {
257284

258285
type FsGetResp struct {
259286
ObjResp
260-
RawURL string `json:"raw_url"`
261-
Readme string `json:"readme"`
262-
Header string `json:"header"`
263-
Provider string `json:"provider"`
264-
Related []ObjResp `json:"related"`
287+
RawURL string `json:"raw_url"`
288+
Readme string `json:"readme"`
289+
Header string `json:"header"`
290+
ReadmeObj *ObjResp `json:"readme_obj"`
291+
HeaderObj *ObjResp `json:"header_obj"`
292+
Provider string `json:"provider"`
293+
Related []ObjResp `json:"related"`
265294
}
266295

267296
func FsGetSplit(c *gin.Context) {
@@ -375,11 +404,13 @@ func FsGet(c *gin.Context, req *FsGetReq, user *model.User) {
375404
Thumb: thumb,
376405
MountDetails: mountDetails,
377406
},
378-
RawURL: rawURL,
379-
Readme: getReadme(meta, reqPath),
380-
Header: getHeader(meta, reqPath),
381-
Provider: provider,
382-
Related: toObjsResp(related, parentPath, isEncrypt(parentMeta, parentPath)),
407+
RawURL: rawURL,
408+
Readme: getReadme(meta, reqPath),
409+
Header: getHeader(meta, reqPath),
410+
ReadmeObj: resolveMetaObj(c, getReadme(meta, reqPath), req.Password),
411+
HeaderObj: resolveMetaObj(c, getHeader(meta, reqPath), req.Password),
412+
Provider: provider,
413+
Related: toObjsResp(related, parentPath, isEncrypt(parentMeta, parentPath)),
383414
})
384415
}
385416

0 commit comments

Comments
 (0)