qinglong-go/controller/router.go

39 lines
978 B
Go

package controller
import (
"github.com/gin-contrib/gzip"
"github.com/gin-contrib/static"
"github.com/gin-gonic/gin"
"github.com/huoxue1/qinglong-go/api"
"io/ioutil"
"strings"
)
func Router() *gin.Engine {
engine := gin.New()
engine.Use(gin.Logger())
engine.Use(gin.Recovery())
engine.Use(gzip.Gzip(gzip.BestSpeed))
engine.Use(static.Serve("/", static.LocalFile("static/dist/", false)))
engine.NoRoute(func(ctx *gin.Context) {
accept := ctx.Request.Header.Get("Accept")
flag := strings.Contains(accept, "text/html")
if flag {
content, err := ioutil.ReadFile("static/dist/index.html")
if (err) != nil {
ctx.Writer.WriteHeader(404)
_, _ = ctx.Writer.WriteString("Not Found")
return
}
ctx.Writer.WriteHeader(200)
ctx.Writer.Header().Add("Accept", "text/html")
_, _ = ctx.Writer.Write(content)
ctx.Writer.Flush()
}
})
api.Api(engine.Group("/api", api.Jwt()))
api.Open(engine.Group("/open", api.OpenJwt()))
return engine
}