package control

import (
	"net/http"
	"time"

	"github.com/jan/fm-rds-tx/internal/config"
)

const (
	defaultReadHeaderTimeout = 5 * time.Second
	defaultIdleTimeout       = 60 * time.Second
	defaultMaxHeaderBytes    = 1 << 20 // 1 MiB
)

// NewHTTPServer returns a configured HTTP server for the control plane.
//
// WriteTimeout is intentionally not set: /audio/stream accepts long-lived
// POST bodies (continuous PCM push) that would be cut off by a global write
// deadline. Individual endpoints are protected by MaxBytesReader limits.
// ReadHeaderTimeout guards against slow-header attacks.
func NewHTTPServer(cfg config.Config, handler http.Handler) *http.Server {
	return &http.Server{
		Addr:              cfg.Control.ListenAddress,
		Handler:           handler,
		ReadHeaderTimeout: defaultReadHeaderTimeout,
		IdleTimeout:       defaultIdleTimeout,
		MaxHeaderBytes:    defaultMaxHeaderBytes,
	}
}
