// 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) }