Files
Supervisor/internal/httpserver/router.go

43 lines
1.1 KiB
Go

package httpserver
import (
"log"
"net/http"
"supervisor/internal/httpserver/handlers"
"supervisor/internal/static"
)
type Dependencies struct {
Logger *log.Logger
Manager handlers.SessionService
}
func NewRouter(deps Dependencies) (http.Handler, error) {
mux := http.NewServeMux()
healthHandler := handlers.HealthHandler{}
sessions := handlers.NewSessionsHandler(deps.Manager)
wsHandler := handlers.NewWSTerminalHandler(deps.Manager)
mux.HandleFunc("GET /healthz", healthHandler.Handle)
mux.HandleFunc("GET /api/sessions", sessions.List)
mux.HandleFunc("POST /api/sessions", sessions.Create)
mux.HandleFunc("GET /api/sessions/{id}", sessions.Get)
mux.HandleFunc("POST /api/sessions/{id}/input", sessions.Input)
mux.HandleFunc("POST /api/sessions/{id}/stop", sessions.Stop)
mux.HandleFunc("DELETE /api/sessions/{id}", sessions.Delete)
mux.HandleFunc("GET /ws/sessions/{id}", wsHandler.Handle)
staticHandler, err := static.NewSPAHandler()
if err != nil {
return nil, err
}
mux.Handle("/", staticHandler)
var root http.Handler = mux
root = RecoverMiddleware(deps.Logger, root)
root = LoggingMiddleware(deps.Logger, root)
return root, nil
}