gin router added
This commit is contained in:
parent
d827debd7f
commit
f56a39d065
5 changed files with 319 additions and 9 deletions
74
pkg/router/handler.go
Normal file
74
pkg/router/handler.go
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
package router
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net"
|
||||
"net/http"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
log "github.com/sirupsen/logrus"
|
||||
swaggerFiles "github.com/swaggo/files"
|
||||
ginSwagger "github.com/swaggo/gin-swagger"
|
||||
)
|
||||
|
||||
type Deps struct {
|
||||
Host string
|
||||
Port string
|
||||
Prefix string
|
||||
GinMode string
|
||||
}
|
||||
|
||||
type Router struct {
|
||||
srv *http.Server
|
||||
engine *gin.Engine
|
||||
prefix string
|
||||
}
|
||||
|
||||
func NewRouter(deps Deps) *Router {
|
||||
if deps.GinMode == "release" {
|
||||
gin.SetMode(gin.ReleaseMode)
|
||||
} else {
|
||||
gin.SetMode(gin.DebugMode)
|
||||
}
|
||||
|
||||
engine := gin.Default()
|
||||
if deps.GinMode == "release" {
|
||||
gin.SetMode(gin.ReleaseMode)
|
||||
err := engine.SetTrustedProxies([]string{"172.20.0.0/16"})
|
||||
if err != nil {
|
||||
log.WithError(err).Error("Router | Set proxies failed")
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
engine.NoRoute(func(c *gin.Context) {
|
||||
c.Status(http.StatusForbidden)
|
||||
})
|
||||
|
||||
engine.RedirectTrailingSlash = false
|
||||
|
||||
engine.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||||
|
||||
return &Router{
|
||||
srv: &http.Server{
|
||||
Addr: net.JoinHostPort(deps.Host, deps.Port),
|
||||
Handler: engine,
|
||||
},
|
||||
engine: engine,
|
||||
}
|
||||
}
|
||||
|
||||
func (r *Router) Run() error {
|
||||
log.Info("Http server started on: ", r.srv.Addr)
|
||||
return r.srv.ListenAndServe()
|
||||
}
|
||||
|
||||
func (r *Router) Shutdown(ctx context.Context) error {
|
||||
log.Info("Http server shutting down")
|
||||
return r.srv.Shutdown(ctx)
|
||||
}
|
||||
|
||||
func (r *Router) BaseGroup() *gin.RouterGroup {
|
||||
return r.engine.Group(fmt.Sprintf("%v/", r.prefix))
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue