74 lines
1.7 KiB
Go
74 lines
1.7 KiB
Go
package http
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/rs/zerolog"
|
|
"gitlab.33.cn/chat/dtalk/pkg/api"
|
|
"gitlab.33.cn/chat/dtalk/pkg/logger"
|
|
"gitlab.33.cn/chat/dtalk/service/call/service"
|
|
"net/http"
|
|
|
|
swaggerFiles "github.com/swaggo/files"
|
|
ginSwagger "github.com/swaggo/gin-swagger"
|
|
_ "gitlab.33.cn/chat/dtalk/service/call/docs"
|
|
)
|
|
|
|
const srvName = "call/http"
|
|
|
|
var (
|
|
svc *service.Service
|
|
log zerolog.Logger
|
|
)
|
|
|
|
func Init(s *service.Service) *http.Server {
|
|
addr := s.Config().HttpServer.Addr
|
|
engine := defaultEngine()
|
|
initService(s)
|
|
setupEngine(engine)
|
|
log = logger.New(s.Config().Env, srvName)
|
|
|
|
srv := &http.Server{
|
|
Addr: addr,
|
|
Handler: engine,
|
|
}
|
|
go func() {
|
|
// service connections
|
|
if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
|
|
log.Error().Err(err).Msg("engineInner.Start()")
|
|
panic(err)
|
|
}
|
|
}()
|
|
return srv
|
|
}
|
|
|
|
// defaultEngine returns an Engine instance with the Logger and Recovery middleware already attached.
|
|
func defaultEngine() *gin.Engine {
|
|
router := gin.New()
|
|
// LoggerWithFormatter middleware will write the logs to gin.DefaultWriter
|
|
// By default gin.DefaultWriter = os.Stdout
|
|
router.Use(gin.LoggerWithFormatter(api.Chat33GinLogFormatter))
|
|
router.Use(gin.Recovery())
|
|
return router
|
|
}
|
|
|
|
func initService(s *service.Service) {
|
|
svc = s
|
|
}
|
|
|
|
// setupEngine
|
|
// @title 音视频信令服务接口
|
|
// @version 1.0
|
|
// @host 127.0.0.1:18013
|
|
func setupEngine(e *gin.Engine) *gin.Engine {
|
|
app := e.Group("/app", api.RespMiddleWare(), api.AuthMiddleWare())
|
|
{
|
|
app.POST("/start-call", startCall)
|
|
app.POST("/reply-busy", replyBusy)
|
|
app.POST("/check-call", checkCall)
|
|
app.POST("/handle-call", handleCall)
|
|
}
|
|
|
|
e.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
|
return e
|
|
}
|