From 9e2a77bff7c612242c0716025135525105ea199f Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Mon, 25 Mar 2024 09:23:43 +0800 Subject: [PATCH] :art: Asset link element prompt shows more information https://github.com/siyuan-note/siyuan/issues/10714 --- kernel/api/asset.go | 43 +++++++++++++++++++++++++++++++++++++++++++ kernel/api/router.go | 1 + kernel/go.mod | 1 + kernel/go.sum | 3 +++ 4 files changed, 48 insertions(+) diff --git a/kernel/api/asset.go b/kernel/api/asset.go index 0dc9c6133..ba8f82e21 100644 --- a/kernel/api/asset.go +++ b/kernel/api/asset.go @@ -19,16 +19,59 @@ package api import ( "fmt" "net/http" + "os" "path/filepath" "strings" "github.com/88250/gulu" + "github.com/djherbis/times" "github.com/gin-gonic/gin" "github.com/siyuan-note/filelock" "github.com/siyuan-note/siyuan/kernel/model" "github.com/siyuan-note/siyuan/kernel/util" ) +func statAsset(c *gin.Context) { + ret := gulu.Ret.NewResult() + defer c.JSON(http.StatusOK, ret) + + arg, ok := util.JsonArg(c, ret) + if !ok { + return + } + + path := arg["path"].(string) + p, err := model.GetAssetAbsPath(path) + if nil != err { + ret.Code = -1 + ret.Msg = err.Error() + ret.Data = map[string]interface{}{"closeTimeout": 3000} + return + } + + info, err := os.Stat(p) + if nil != err { + ret.Code = -1 + ret.Msg = err.Error() + ret.Data = map[string]interface{}{"closeTimeout": 3000} + return + } + + t, err := times.Stat(p) + if nil != err { + ret.Code = -1 + ret.Msg = err.Error() + ret.Data = map[string]interface{}{"closeTimeout": 3000} + return + } + + ret.Data = map[string]interface{}{ + "size": info.Size(), + "created": t.BirthTime().UnixMilli(), + "updated": t.ModTime().UnixMilli(), + } +} + func fullReindexAssetContent(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret) diff --git a/kernel/api/router.go b/kernel/api/router.go index 88d40ab05..e42551a04 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -264,6 +264,7 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/asset/getImageOCRText", model.CheckAuth, model.CheckReadonly, getImageOCRText) ginServer.Handle("POST", "/api/asset/setImageOCRText", model.CheckAuth, model.CheckReadonly, setImageOCRText) ginServer.Handle("POST", "/api/asset/fullReindexAssetContent", model.CheckAuth, model.CheckReadonly, fullReindexAssetContent) + ginServer.Handle("POST", "/api/asset/statAsset", model.CheckAuth, statAsset) ginServer.Handle("POST", "/api/export/batchExportMd", model.CheckAuth, batchExportMd) ginServer.Handle("POST", "/api/export/exportMd", model.CheckAuth, exportMd) diff --git a/kernel/go.mod b/kernel/go.mod index 44fdacc3c..c6407434f 100644 --- a/kernel/go.mod +++ b/kernel/go.mod @@ -21,6 +21,7 @@ require ( github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be github.com/denisbrodbeck/machineid v1.0.1 github.com/dgraph-io/ristretto v0.1.1 + github.com/djherbis/times v1.6.0 github.com/dustin/go-humanize v1.0.1 github.com/emirpasic/gods v1.18.1 github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb diff --git a/kernel/go.sum b/kernel/go.sum index 3689f23fe..94ead279f 100644 --- a/kernel/go.sum +++ b/kernel/go.sum @@ -78,6 +78,8 @@ github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWa github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/djherbis/times v1.6.0 h1:w2ctJ92J8fBvWPxugmXIv7Nz7Q3iDMKNx9v5ocVH20c= +github.com/djherbis/times v1.6.0/go.mod h1:gOHeRAz2h+VJNZ5Gmc/o7iD9k4wW7NMVqieYCY99oc0= github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI= github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= @@ -481,6 +483,7 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211023085530-d6a326fbbf70/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=