package server import ( "fmt" "sync" "artNet/cert" "artNet/driver" serverModels "artNet/server/models" "github.com/gin-gonic/gin" "github.com/tecamino/tecamino-logger/logging" ) type Server struct { engine *gin.Engine sync.RWMutex Subscribers serverModels.Subscribers Logger *logging.Logger Driver *driver.ArtNetDriver } func NewServer() *Server { s := Server{ engine: gin.Default(), Subscribers: serverModels.InitSubsrcibers(), } s.AddRoutes() s.Driver = driver.NewDriver() return &s } func (s *Server) ServeHttp(port uint) error { if err := s.engine.Run(fmt.Sprintf(":%d", port)); err != nil { return fmt.Errorf("failed to run http server: %v", err) } return nil } func (s *Server) ServeHttps(port uint, cert cert.Cert) error { cert.GenerateSelfSignedCert() if err := s.engine.RunTLS(fmt.Sprintf(":%d", port), cert.CertFile, cert.KeyFile); err != nil { return fmt.Errorf("failed to run https server: %v", err) } return nil }