api-doc/generate.go

117 lines
2.5 KiB
Go
Raw Normal View History

2024-07-22 16:04:21 +08:00
// Package api_doc ...
//
// Description : api_doc ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2024-07-22 15:55
package api_doc
import (
"git.zhangdeman.cn/gateway/api-doc/define"
"git.zhangdeman.cn/zhangdeman/consts"
2024-08-14 14:54:57 +08:00
"strings"
2024-07-22 16:04:21 +08:00
)
// NewOpenapiDoc ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 15:56 2024/7/22
func NewOpenapiDoc() *Generate {
return &Generate{
docData: &define.OpenapiDoc{
Openapi: consts.SwaggerDocVersion3,
Info: &define.Info{
Description: "openapi接口文档",
Title: "openapi接口文档",
TermsOfService: "",
Contact: &define.Contact{
Name: "",
Url: "",
Email: "",
},
License: &define.License{
Name: "",
Url: "",
},
Version: "",
},
2024-08-14 14:24:30 +08:00
Servers: make([]*define.ServerItem, 0),
Components: &define.Components{Schemas: map[string]*define.Schema{}},
Tags: make([]*define.TagItem, 0),
Paths: make(map[string]*define.PathConfig),
2024-07-22 16:04:21 +08:00
},
}
}
// Generate 文档生成实例
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 15:57 2024/7/22
type Generate struct {
docData *define.OpenapiDoc
}
2024-08-14 14:24:30 +08:00
// AddTag 新增tag
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 14:23 2024/8/14
func (g *Generate) AddTag(tagName string, tagDesc string) {
isHasTag := false
for _, item := range g.docData.Tags {
if item.Name == tagName {
if len(tagDesc) > 0 {
item.Description = tagDesc
}
isHasTag = true
break
}
}
if !isHasTag {
g.docData.Tags = append(g.docData.Tags, &define.TagItem{
Name: tagName,
Description: tagDesc,
})
}
}
2024-08-14 14:54:57 +08:00
// AddServer 添加server
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 14:45 2024/8/14
func (g *Generate) AddServer(serverDomain string, serverDesc string, serverVariable map[string]*define.ServerItemVariable) {
if nil == serverVariable {
serverVariable = make(map[string]*define.ServerItemVariable)
}
serverDomain = strings.TrimRight(serverDomain, "/")
isHasServer := false
for _, item := range g.docData.Servers {
if item.Url != serverDomain {
continue
}
isHasServer = true
if len(serverDesc) > 0 {
item.Description = serverDesc
}
for varName, varValue := range serverVariable {
item.Variables[varName] = varValue
}
break
}
if !isHasServer {
g.docData.Servers = append(g.docData.Servers, &define.ServerItem{
Url: serverDomain,
Description: serverDesc,
Variables: serverVariable,
})
}
}
2024-08-14 14:24:30 +08:00
func (g *Generate) AddApi() {
}