Files
PandaX/iothub/server/httpserver/http_server.go
2023-09-26 18:05:47 +08:00

59 lines
1.1 KiB
Go

package httpserver
import (
"context"
"github.com/emicklei/go-restful/v3"
"net/http"
"pandax/pkg/global"
)
const DefaultPort = ":9002"
type HttpServer struct {
Addr string
srv *http.Server
Container *restful.Container
}
func NewHttpServer(addr string) *HttpServer {
if addr == "" {
addr = DefaultPort
}
c := restful.NewContainer()
c.EnableContentEncoding(true)
return &HttpServer{
Addr: addr,
Container: c,
srv: &http.Server{
Addr: addr,
Handler: c,
},
}
}
func (s *HttpServer) GetServe() *http.Server {
return s.srv
}
func (s *HttpServer) Type() string {
return "HTTP"
}
func (s *HttpServer) Start(ctx context.Context) error {
if global.Conf.Server.Tls.Enable {
if err := s.srv.ListenAndServeTLS(global.Conf.Server.Tls.CertFile, global.Conf.Server.Tls.KeyFile); err != nil {
global.Log.Errorf("error http serve: %s", err)
}
} else {
if err := s.srv.ListenAndServe(); err != nil {
global.Log.Errorf("error http serve: %s", err)
}
}
return nil
}
func (s *HttpServer) Stop(ctx context.Context) error {
s.srv.Shutdown(ctx)
return nil
}