qinglong-go/api/config/config.go

71 lines
1.4 KiB
Go
Raw Normal View History

2022-11-16 10:20:07 +00:00
package config
import (
"github.com/gin-gonic/gin"
2023-04-22 10:02:50 +00:00
"github.com/huoxue1/qinglong-go/internal/res"
2022-11-16 10:20:07 +00:00
"os"
)
const (
Dir = "data/config/"
)
func Api(group *gin.RouterGroup) {
group.GET("/files", files())
group.GET("/:name", getFile())
group.POST("/save", save())
}
func files() gin.HandlerFunc {
return func(ctx *gin.Context) {
entries, err := os.ReadDir(Dir)
if err != nil {
ctx.JSON(503, res.Err(503, err))
}
var result []map[string]string
for _, entry := range entries {
if !entry.IsDir() && entry.Name() != "auth.json" {
result = append(result, map[string]string{
"title": entry.Name(),
"value": entry.Name(),
})
}
}
ctx.JSON(200, res.Ok(result))
}
}
func getFile() gin.HandlerFunc {
return func(ctx *gin.Context) {
name := ctx.Param("name")
file, err := os.ReadFile(Dir + name)
if err != nil {
ctx.JSON(503, res.Err(503, err))
return
}
ctx.JSON(200, res.Ok(string(file)))
}
}
func save() gin.HandlerFunc {
return func(ctx *gin.Context) {
type req struct {
Name string `json:"name"`
Content string `json:"content"`
}
r := new(req)
err := ctx.ShouldBindJSON(r)
if err != nil {
ctx.JSON(502, res.Err(502, err))
return
}
err = os.WriteFile(Dir+r.Name, []byte(r.Content), 0666)
if err != nil {
ctx.JSON(503, res.Err(502, err))
return
}
ctx.JSON(200, res.OkMessage(true, "保存成功"))
}
}