1 Star 0 Fork 0

Ulric Qin/integrations

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
main.go 2.05 KB
一键复制 编辑 原始数据 按行查看 历史
Ulric Qin 提交于 2021-12-20 11:27 +08:00 . add main.go
package main
import (
"fmt"
"net/http"
"os"
"path"
"path/filepath"
"strings"
"github.com/gin-gonic/gin"
"github.com/toolkits/pkg/file"
)
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.String(200, "pong")
})
r.GET("/api/integrations", list)
r.GET("/api/integration/:dir/overview", overview)
r.GET("/api/integration/:dir/configuration", configuration)
r.GET("/api/integration/:dir/dashboard", dashboard)
r.GET("/api/integration/:dir/metrics", metrics)
r.GET("/api/integration/:dir/monitors", monitors)
configNoRoute(r)
if len(os.Args) != 2 {
fmt.Println("arg: <listen> missed")
return
}
listen := os.Args[1]
fmt.Println("listen:", listen)
r.Run(listen)
}
type Integration struct {
Name string `yaml:"name" json:"name"`
Label string `yaml:"label" json:"label"`
Logo string `yaml:"logo" json:"logo"`
Description string `yaml:"description" json:"description"`
}
func list(c *gin.Context) {
var integrations []Integration
err := file.ReadYaml("index.yaml", &integrations)
if err != nil {
c.String(http.StatusInternalServerError, err.Error())
return
}
c.JSON(200, integrations)
}
func configNoRoute(r *gin.Engine) {
r.NoRoute(func(c *gin.Context) {
if strings.Contains(c.Request.URL.Path, "..") {
c.AbortWithStatus(404)
return
}
arr := strings.Split(c.Request.URL.Path, ".")
suffix := arr[len(arr)-1]
switch suffix {
case "png", "jpeg", "jpg", "svg", "ico", "gif", "css", "js", "html", "htm", "gz", "zip", "map":
c.File(path.Join(strings.Split("./"+c.Request.URL.Path, "/")...))
default:
c.AbortWithStatus(404)
}
})
}
func overview(c *gin.Context) {
c.File(filepath.Join(c.Param("dir"), "overview.md"))
}
func configuration(c *gin.Context) {
c.File(filepath.Join(c.Param("dir"), "configuration.md"))
}
func dashboard(c *gin.Context) {
c.File(filepath.Join(c.Param("dir"), "dashboard.md"))
}
func metrics(c *gin.Context) {
c.File(filepath.Join(c.Param("dir"), "metrics.md"))
}
func monitors(c *gin.Context) {
c.File(filepath.Join(c.Param("dir"), "monitors.md"))
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/cnperl/integrations.git
git@gitee.com:cnperl/integrations.git
cnperl
integrations
integrations
master

搜索帮助