85 lines
2.0 KiB
Go
85 lines
2.0 KiB
Go
|
// Package api_doc ...
|
||
|
//
|
||
|
// Description : api_doc ...
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 2025-02-16 13:19
|
||
|
package api_doc
|
||
|
|
||
|
import (
|
||
|
"git.zhangdeman.cn/gateway/api-doc/define"
|
||
|
"github.com/gin-gonic/gin"
|
||
|
knife4goFiles "github.com/go-webtools/knife4go"
|
||
|
knife4goGin "github.com/go-webtools/knife4go/gin"
|
||
|
swaggerFiles "github.com/swaggo/files"
|
||
|
ginSwagger "github.com/swaggo/gin-swagger"
|
||
|
)
|
||
|
|
||
|
// NewSwaggerUI ...
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 21:21 2025/2/15
|
||
|
func NewSwaggerUI(info *define.Info, servers []*define.ServerItem, uiTheme string) *SwaggerUI {
|
||
|
return &SwaggerUI{
|
||
|
docInstance: NewOpenapiDoc(info, servers),
|
||
|
uiTheme: uiTheme,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
type SwaggerUI struct {
|
||
|
docInstance *Generate // 文档实例
|
||
|
uiTheme string // 文档主题, swaggerUI / knife4go, 默认 knife4go
|
||
|
}
|
||
|
|
||
|
// DocInstance 文档实例
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 13:23 2025/2/16
|
||
|
func (su *SwaggerUI) DocInstance() *Generate {
|
||
|
return su.docInstance
|
||
|
}
|
||
|
|
||
|
// Handler 访问文档的接口处理
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 21:34 2025/2/15
|
||
|
func (su *SwaggerUI) Handler() func(ctx *gin.Context) {
|
||
|
switch su.uiTheme {
|
||
|
case define.SwaggerUIThemeKnife4go:
|
||
|
return su.HandleKnife4goUI()
|
||
|
case define.SwaggerUIThemeYDocLucky:
|
||
|
// TODO : YDoc-Lucky-UI 主题处理
|
||
|
return su.HandleSwaggerUI()
|
||
|
default:
|
||
|
return su.HandleSwaggerUI()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// HandleKnife4goUI ...
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 21:38 2025/2/15
|
||
|
func (su *SwaggerUI) HandleKnife4goUI() func(ctx *gin.Context) {
|
||
|
resetOption := func(cfg *knife4goGin.Config) {
|
||
|
if nil == cfg {
|
||
|
return
|
||
|
}
|
||
|
cfg.Title = "服务接口文档"
|
||
|
}
|
||
|
return knife4goGin.WrapHandler(knife4goFiles.Handler, resetOption)
|
||
|
}
|
||
|
|
||
|
// HandleSwaggerUI ...
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 21:41 2025/2/15
|
||
|
func (su *SwaggerUI) HandleSwaggerUI() func(ctx *gin.Context) {
|
||
|
return ginSwagger.WrapHandler(swaggerFiles.Handler)
|
||
|
}
|