package server

import (
	"kra/internal/conf"

	"github.com/gin-gonic/gin"
	khttp "github.com/go-kratos/kratos/v2/transport/http"
)

// NewHTTPServer 创建HTTP服务器，将gin路由挂载到kratos http server
func NewHTTPServer(c *conf.Server, ginRouter *gin.Engine) *khttp.Server {
	var opts = []khttp.ServerOption{}

	if c.Http.Network != "" {
		opts = append(opts, khttp.Network(c.Http.Network))
	}
	if c.Http.Addr != "" {
		opts = append(opts, khttp.Address(c.Http.Addr))
	}
	if c.Http.Timeout != nil {
		opts = append(opts, khttp.Timeout(c.Http.Timeout.AsDuration()))
	}

	srv := khttp.NewServer(opts...)

	// 关键：将gin路由挂载到kratos http server
	srv.HandlePrefix("/", ginRouter)

	return srv
}
