Something went wrong. Try again.
forked from charmbracelet/soft-serve
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263package web
import ( "context" "crypto/tls" "net/http" "time"
"charm.land/log/v2" "github.com/charmbracelet/soft-serve/pkg/config")
// HTTPServer is an http server.type HTTPServer struct { ctx context.Context cfg *config.Config
Server *http.Server}
// NewHTTPServer creates a new HTTP server.func NewHTTPServer(ctx context.Context) (*HTTPServer, error) { cfg := config.FromContext(ctx) logger := log.FromContext(ctx) s := &HTTPServer{ ctx: ctx, cfg: cfg, Server: &http.Server{ Addr: cfg.HTTP.ListenAddr, Handler: NewRouter(ctx), ReadHeaderTimeout: time.Second * 10, IdleTimeout: time.Second * 10, MaxHeaderBytes: http.DefaultMaxHeaderBytes, ErrorLog: logger.StandardLog(log.StandardLogOptions{ForceLevel: log.ErrorLevel}), }, }
return s, nil}
// SetTLSConfig sets the TLS configuration for the HTTP server.func (s *HTTPServer) SetTLSConfig(tlsConfig *tls.Config) { s.Server.TLSConfig = tlsConfig}
// Close closes the HTTP server.func (s *HTTPServer) Close() error { return s.Server.Close()}
// ListenAndServe starts the HTTP server.func (s *HTTPServer) ListenAndServe() error { if s.Server.TLSConfig != nil { return s.Server.ListenAndServeTLS("", "") } return s.Server.ListenAndServe()}
// Shutdown gracefully shuts down the HTTP server.func (s *HTTPServer) Shutdown(ctx context.Context) error { return s.Server.Shutdown(ctx)}