server.go 843 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package server
  2. import (
  3. "fmt"
  4. "github.com/go-chi/chi/v5"
  5. "github.com/sirupsen/logrus"
  6. "godash/config"
  7. "godash/hub"
  8. "godash/message"
  9. "net/http"
  10. )
  11. type Server struct {
  12. Router *chi.Mux
  13. Hub *hub.Hub
  14. Port int
  15. AllowedHosts []string `mapstructure:"ALLOWED_HOSTS"`
  16. Swagger bool
  17. }
  18. var server = Server{}
  19. func NewServer() {
  20. config.ParseViperConfig(&server, config.AddViperConfig("server"))
  21. server.Router = chi.NewRouter()
  22. server.Hub = hub.NewHub()
  23. server.setupMiddlewares()
  24. server.setupRouter()
  25. server.setupSwagger()
  26. server.Listen()
  27. }
  28. func (server *Server) Listen() {
  29. logrus.WithField("port", server.Port).Info("application running")
  30. err := http.ListenAndServe(fmt.Sprintf(":%d", server.Port), server.Router)
  31. if err != nil {
  32. logrus.WithField("error", err).Fatal(message.CannotStart.String())
  33. }
  34. }