Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
28 lines
890 B
Go
28 lines
890 B
Go
package swaggerutil
|
|
|
|
import (
|
|
"fmt"
|
|
"videoweb/pub/common/netutil"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
swaggerFiles "github.com/swaggo/files"
|
|
ginSwagger "github.com/swaggo/gin-swagger"
|
|
)
|
|
|
|
func isDevHost(runMode string, svcListenIp string) bool {
|
|
localIp := netutil.GetLocalIP()
|
|
return (runMode == "dev" || runMode == "debug") && localIp != svcListenIp
|
|
}
|
|
|
|
func SetupGinSwagger(runMode, svcListenIp, svcListenPort string) func(r *gin.Engine) {
|
|
return func(r *gin.Engine) {
|
|
if isDevHost(runMode, svcListenIp) {
|
|
url := ginSwagger.URL(fmt.Sprintf("http://%s:%s/swagger/doc.json", netutil.GetLocalIP(), svcListenPort))
|
|
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler, url))
|
|
} else {
|
|
url := ginSwagger.URL(fmt.Sprintf("http://%s:%s/swagger/doc.json", svcListenIp, svcListenPort))
|
|
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler, url))
|
|
}
|
|
}
|
|
}
|