瀏覽代碼

🎨 改进伺服代码片段 `/snippets/` #6356 (#6380)

* :bug: fix #5857

* :art: #5990 桌面端 `SiYuan` 可执行程序支持使用参数连接非本机内核服务

* :art: style

* :art: style

* :art: style

* 🎨 改进伺服代码片段 `/snippets/` #6356
颖逸 2 年之前
父節點
當前提交
1809c27f60
共有 3 個文件被更改,包括 9 次插入5 次删除
  1. 6 5
      kernel/api/snippet.go
  2. 2 0
      kernel/util/working.go
  3. 1 0
      kernel/util/working_mobile.go

+ 6 - 5
kernel/api/snippet.go

@@ -32,16 +32,16 @@ import (
 )
 
 func serveSnippets(c *gin.Context) {
-	name := strings.TrimPrefix(c.Request.URL.Path, "/snippets/")
-	ext := filepath.Ext(name)
-	name = strings.TrimSuffix(name, ext)
+	filePath := strings.TrimPrefix(c.Request.URL.Path, "/snippets/")
+	ext := filepath.Ext(filePath)
+	name := strings.TrimSuffix(filePath, ext)
 	confSnippets, err := model.LoadSnippets()
 	if nil != err {
 		logging.LogErrorf("load snippets failed: %s", name, err)
 		c.Status(404)
 		return
 	}
-
+	
 	for _, s := range confSnippets {
 		if s.Name == name && ("" != ext && s.Type == ext[1:]) {
 			c.Header("Content-Type", mime.TypeByExtension(ext))
@@ -49,7 +49,8 @@ func serveSnippets(c *gin.Context) {
 			return
 		}
 	}
-	c.Status(404)
+	filePath = filepath.Join(util.SnippetsPath, filePath)
+	c.File(filePath)
 }
 
 func getSnippet(c *gin.Context) {

+ 2 - 0
kernel/util/working.go

@@ -172,6 +172,7 @@ var (
 	AppearancePath string        // 配置目录下的外观目录 appearance/ 路径
 	ThemesPath     string        // 配置目录下的外观目录下的 themes/ 路径
 	IconsPath      string        // 配置目录下的外观目录下的 icons/ 路径
+	SnippetsPath   string		 // 数据目录下的 snippets/ 路径
 
 	AndroidNativeLibDir   string // Android 库路径
 	AndroidPrivateDataDir string // Android 私有数据路径
@@ -274,6 +275,7 @@ func initWorkspaceDir(workspaceArg string) {
 	DBPath = filepath.Join(TempDir, DBName)
 	HistoryDBPath = filepath.Join(TempDir, "history.db")
 	BlockTreePath = filepath.Join(TempDir, "blocktree.msgpack")
+	SnippetsPath = filepath.Join(DataDir, "snippets")
 }
 
 var (

+ 1 - 0
kernel/util/working_mobile.go

@@ -60,6 +60,7 @@ func BootMobile(container, appDir, workspaceDir, nativeLibDir, privateDataDir, l
 	AppearancePath = filepath.Join(ConfDir, "appearance")
 	ThemesPath = filepath.Join(AppearancePath, "themes")
 	IconsPath = filepath.Join(AppearancePath, "icons")
+	SnippetsPath = filepath.Join(DataDir, "snippets")
 	Resident = true
 	ServerPort = FixedPort
 	Container = container