You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
924 B
51 lines
924 B
package sig |
|
|
|
import ( |
|
"net/http" |
|
"runtime/debug" |
|
"sig-pub/internal/sig/service" |
|
"sig-pub/pkg/resp" |
|
"sig-pub/pkg/storage/persist" |
|
"sig-pub/pkg/zlog" |
|
|
|
"github.com/gin-gonic/gin" |
|
) |
|
|
|
type SigServer struct { |
|
rdb *persist.DB |
|
engine *gin.Engine |
|
} |
|
|
|
func NewSigServer(rdb *persist.DB) *SigServer { |
|
return &SigServer{ |
|
rdb: rdb, |
|
} |
|
} |
|
|
|
func (s *SigServer) Init() (err error) { |
|
s.initGinServer() |
|
return |
|
} |
|
|
|
func (s *SigServer) initGinServer() { |
|
s.engine = gin.Default() |
|
s.engine.Use(func(c *gin.Context) { |
|
// global recover |
|
defer func() { |
|
if r := recover(); r != nil { |
|
zlog.Error("http server recover error:", r) |
|
debug.PrintStack() |
|
c.JSON(http.StatusInternalServerError, resp.Error("server error")) |
|
c.Abort() |
|
} |
|
}() |
|
c.Next() |
|
}) |
|
|
|
routerGroup := s.engine.Group("/api/sig") |
|
service.Init(routerGroup, s.rdb) |
|
} |
|
|
|
func (s *SigServer) Run(addr string) (err error) { |
|
return s.engine.Run(addr) |
|
}
|
|
|