@@ -0,0 +1,121 @@
|
||||
package router
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"videoweb/pub/common/errors"
|
||||
"videoweb/pub/common/log"
|
||||
"videoweb/pub/common/useragent"
|
||||
"videoweb/web/middleware/auth"
|
||||
"videoweb/web/middleware/cors"
|
||||
"videoweb/web/middleware/ipblacklist"
|
||||
"videoweb/web/middleware/limitHandler"
|
||||
"videoweb/web/webg"
|
||||
|
||||
swaggerFiles "github.com/swaggo/files"
|
||||
ginSwagger "github.com/swaggo/gin-swagger"
|
||||
|
||||
"github.com/DeanThompson/ginpprof"
|
||||
"github.com/gin-gonic/gin"
|
||||
|
||||
_ "videoweb/web/docs"
|
||||
)
|
||||
|
||||
func Init() (engine *gin.Engine) {
|
||||
|
||||
// 设置启动模式
|
||||
switch webg.Conf.RunMod {
|
||||
case "dev":
|
||||
gin.SetMode(gin.DebugMode)
|
||||
case "test":
|
||||
gin.SetMode(gin.TestMode)
|
||||
case "prod":
|
||||
gin.SetMode(gin.ReleaseMode)
|
||||
default:
|
||||
gin.SetMode(gin.DebugMode)
|
||||
}
|
||||
|
||||
// 初始化gin引擎
|
||||
engine = gin.Default()
|
||||
engine.HandleMethodNotAllowed = true
|
||||
engine.MaxMultipartMemory = 60 << 20
|
||||
|
||||
engine.NoMethod(noMethod)
|
||||
engine.NoRoute(noRoute)
|
||||
|
||||
// 注册中间件
|
||||
registeMiddleware(engine)
|
||||
wbVideoDataRouter(engine)
|
||||
registerRouter(engine)
|
||||
log.Info("setGinSwaggerxxxxx")
|
||||
|
||||
if webg.Conf.RunMod != "prod" {
|
||||
log.Info("setGinSwagger")
|
||||
setGinSwagger(engine)
|
||||
log.Info("setGinSwagger end")
|
||||
}
|
||||
|
||||
// 是否开启监控服务
|
||||
if webg.Conf.Pprof {
|
||||
ginpprof.Wrap(engine)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func noMethod(c *gin.Context) {
|
||||
c.JSON(http.StatusMethodNotAllowed, errors.MakeWithMsg(errors.MethodNotFound, "MethodNotFound"))
|
||||
}
|
||||
|
||||
func noRoute(c *gin.Context) {
|
||||
c.JSON(http.StatusNotFound, errors.MakeWithMsg(errors.ApiNotFound, "ApiNotFound"))
|
||||
}
|
||||
|
||||
func registeMiddleware(engine *gin.Engine) {
|
||||
engine.Use(gin.Recovery())
|
||||
engine.Use(cors.Cors(&cors.Options{
|
||||
Origin: nil, // "*"
|
||||
Methods: []string{http.MethodGet, http.MethodPost, http.MethodPut, http.MethodHead, http.MethodDelete},
|
||||
AllowedHeaders: []string{"Content-Length", "Content-Type", "Authorization", "X-User-Agent", useragent.SDKCommonHeader},
|
||||
ExposedHeaders: []string{"Content-Disposition", "Refresh-Authorization"},
|
||||
OptionsSuccessStatus: http.StatusOK,
|
||||
}))
|
||||
engine.Use(ipblacklist.IpBlackListMiddleware)
|
||||
engine.Use(auth.Auth)
|
||||
engine.Use(limitHandler.LoginLimit)
|
||||
engine.Use(auth.OperateLog)
|
||||
}
|
||||
|
||||
// 设置swag 接口信息
|
||||
func setGinSwagger(router *gin.Engine) {
|
||||
url := ginSwagger.URL(fmt.Sprintf("http://%s:%s/swagger/doc.json", webg.Conf.Host, webg.Conf.ListenAddr))
|
||||
router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler, url))
|
||||
}
|
||||
|
||||
func registerRouter(router *gin.Engine) {
|
||||
rootRouter := router.Group("/api/web")
|
||||
{
|
||||
MainWebRouter(rootRouter)
|
||||
syscfgRouter(rootRouter)
|
||||
fileRouter(rootRouter)
|
||||
videoRouter(rootRouter)
|
||||
richTextContent(rootRouter)
|
||||
commentRouter(rootRouter)
|
||||
ipBlackRouter(rootRouter)
|
||||
detailNavRouter(rootRouter)
|
||||
announcementRouter(rootRouter)
|
||||
cardRouter(rootRouter)
|
||||
coinRouter(rootRouter)
|
||||
rechargePackageRouter(rootRouter)
|
||||
userRouter(rootRouter)
|
||||
translationRouter(rootRouter)
|
||||
mediaResourceRouter(rootRouter)
|
||||
playletRouter(rootRouter)
|
||||
homeBannerRouter(rootRouter)
|
||||
homeConfigRouter(rootRouter)
|
||||
feedbackRouter(rootRouter)
|
||||
contactUsRouter(rootRouter)
|
||||
}
|
||||
// 第三方回调路由(免鉴权,挂在 engine 上而非 /api/web 分组)
|
||||
thirdRouter(router)
|
||||
}
|
||||
Reference in New Issue
Block a user