Skip to main content
Glama
doc.go2.6 kB
package doc import ( "fmt" "github.com/gin-gonic/gin" "github.com/weibaohui/k8m/pkg/comm/utils" "github.com/weibaohui/k8m/pkg/comm/utils/amis" "github.com/weibaohui/k8m/pkg/service" "github.com/weibaohui/kom/kom" ) type Controller struct{} func RegisterRoutes(api *gin.RouterGroup) { ctrl := &Controller{} api.GET("/doc/gvk/:api_version/:kind", ctrl.Doc) api.GET("/doc/kind/:kind/group/:group/version/:version", ctrl.Doc) api.POST("/doc/detail", ctrl.Detail) } // @Summary 获取Kubernetes资源文档信息 // @Security BearerAuth // @Param cluster query string true "集群名称" // @Param kind path string true "资源类型" // @Param group path string true "API组" // @Param version path string true "API版本" // @Success 200 {object} string // @Router /k8s/cluster/{cluster}/doc/kind/{kind}/group/{group}/version/{version} [get] func (cc *Controller) Doc(c *gin.Context) { kind := c.Param("kind") apiVersion := c.Param("api_version") group := c.Param("group") version := c.Param("version") selectedCluster, err := amis.GetSelectedCluster(c) if err != nil { amis.WriteJsonError(c, err) return } ctx := amis.GetContextWithUser(c) // apiVersion 有可能包含xxx.com/v1 类似,所以需要处理 // 前端使用了base64Encode,这里需要反向解析处理 if apiVersion != "" { apiVersion, err = utils.DecodeBase64(apiVersion) if err != nil { amis.WriteJsonError(c, err) return } } if apiVersion == "" { // 没有传递apiVersion apiVersion = fmt.Sprintf("%s/%s", group, version) } docs := kom.Cluster(selectedCluster).WithContext(ctx).Status().Docs() node := docs.FetchByGVK(apiVersion, kind) amis.WriteJsonData(c, gin.H{ "options": []any{ node, }, }) } type DetailReq struct { Description string `json:"description"` Translate string `json:"translate"` } // @Summary 获取文档详情(含翻译) // @Security BearerAuth // @Param cluster query string true "集群名称" // @Param request body DetailReq true "请求体,包含description字段" // @Success 200 {object} DetailReq // @Router /k8s/cluster/{cluster}/doc/detail [post] func (cc *Controller) Detail(c *gin.Context) { detail := &DetailReq{} err := c.ShouldBindBodyWithJSON(&detail) if err != nil { amis.WriteJsonError(c, err) } if detail.Description != "" { q := fmt.Sprintf("请翻译下面的语句,注意直接给出翻译内容,不要解释。待翻译内如如下:\n\n%s", detail.Description) chatService := service.ChatService() result := chatService.Chat(c, q) detail.Translate = result } amis.WriteJsonData(c, detail) }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/weibaohui/k8m'

If you have feedback or need assistance with the MCP directory API, please join our Discord server