From 13d88644a8fcfc66d21f186583f2830130ed8240 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Fri, 24 Mar 2023 15:00:36 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E6=8F=90=E4=BE=9B=20Sprig=20=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E6=B8=B2=E6=9F=93=20API=20Fix=20https://github.com/si?= =?UTF-8?q?yuan-note/siyuan/issues/7767?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- API.md | 22 ++++++++++++++++++++++ API_zh_CN.md | 22 ++++++++++++++++++++++ kernel/api/router.go | 1 + kernel/api/template.go | 19 +++++++++++++++++++ 4 files changed, 64 insertions(+) diff --git a/API.md b/API.md index d866eb087..0e39b5b45 100644 --- a/API.md +++ b/API.md @@ -35,6 +35,7 @@ * [Execute SQL query](#Execute-SQL-query) * [Templates](#Templates) * [Render a template](#Render-a-template) + * [Render Sprig](#Render-Sprig) * [File](#File) * [Get file](#Get-file) * [Put file](#Put-file) @@ -831,6 +832,27 @@ View API token in Settings - About, request header: `Authorization: T } ``` +### 渲染 Sprig + +* `/api/template/renderSprig` +* Parameters + + ```json + { + "template": "/daily note/{{now | date \"2006/01\"}}/{{now | date \"2006-01-02\"}}" + } + ``` + * `template`: template content +* Return value + + ```json + { + "code": 0, + "msg": "", + "data": "/daily note/2023/03/2023-03-24" + } + ``` + ## File ### Get file diff --git a/API_zh_CN.md b/API_zh_CN.md index 01404aab1..b7ed7d693 100644 --- a/API_zh_CN.md +++ b/API_zh_CN.md @@ -35,6 +35,7 @@ * [执行 SQL 查询](#执行-SQL-查询) * [模板](#模板) * [渲染模板](#渲染模板) + * [渲染 Sprig](#渲染-Sprig) * [文件](#文件) * [获取文件](#获取文件) * [写入文件](#写入文件) @@ -824,6 +825,27 @@ } ``` +### 渲染 Sprig + +* `/api/template/renderSprig` +* 参数 + + ```json + { + "template": "/daily note/{{now | date \"2006/01\"}}/{{now | date \"2006-01-02\"}}" + } + ``` + * `template`:模板内容 +* 返回值 + + ```json + { + "code": 0, + "msg": "", + "data": "/daily note/2023/03/2023-03-24" + } + ``` + ## 文件 ### 获取文件 diff --git a/kernel/api/router.go b/kernel/api/router.go index a6b2fb55a..e8e14c4a1 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -248,6 +248,7 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/template/render", model.CheckAuth, renderTemplate) ginServer.Handle("POST", "/api/template/docSaveAsTemplate", model.CheckAuth, model.CheckReadonly, docSaveAsTemplate) + ginServer.Handle("POST", "/api/template/renderSprig", model.CheckAuth, model.CheckReadonly, renderSprig) ginServer.Handle("POST", "/api/transactions", model.CheckAuth, model.CheckReadonly, performTransactions) diff --git a/kernel/api/template.go b/kernel/api/template.go index 61df474c9..36c8050b8 100644 --- a/kernel/api/template.go +++ b/kernel/api/template.go @@ -25,6 +25,25 @@ import ( "github.com/siyuan-note/siyuan/kernel/util" ) +func renderSprig(c *gin.Context) { + ret := gulu.Ret.NewResult() + defer c.JSON(http.StatusOK, ret) + + arg, ok := util.JsonArg(c, ret) + if !ok { + return + } + + template := arg["template"].(string) + content, err := model.RenderGoTemplate(template) + if nil != err { + ret.Code = -1 + ret.Msg = util.EscapeHTML(err.Error()) + return + } + ret.Data = content +} + func docSaveAsTemplate(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret)