package v1 import ( "git.cesium.pw/niku/virteen/internal/auth" "git.cesium.pw/niku/virteen/internal/events" eventServices "git.cesium.pw/niku/virteen/internal/events/services" "git.cesium.pw/niku/virteen/internal/middleware" "git.cesium.pw/niku/virteen/internal/podman" podmanModels "git.cesium.pw/niku/virteen/internal/podman/models" podmanServices "git.cesium.pw/niku/virteen/internal/podman/services" "github.com/gofiber/contrib/websocket" "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/monitor" "github.com/pkg/errors" ) func ConfigureRoutes(router fiber.Router) error { v1 := router.Group("/v1") authController := auth.NewPamAuthController() authGroup := v1.Group("/auth") authGroup.Post("/token", authController.GetToken) v1.Get("/ping", Ping) v1.Get("/metrics", monitor.New()) v1.Use(middleware.Protected()) eventsService := eventServices.NewEventsService() eventsController := events.NewEventsController(eventsService) eventsGroup := v1.Group("/events") eventsGroup.Get("/ws", middleware.UpgradeSocket, websocket.New(eventsController.PollEvents)) var cs podmanModels.PodmanService cs, err := podmanServices.NewPodmanContainerService() if err != nil { panic(errors.Wrapf(err, "failed to build podman container service")) } containerController := podman.NewPodmanController(&cs) containersGroup := v1.Group("/containers") containersGroup.Get("/", containerController.ListContainers) containersGroup.Post("/", containerController.CreateContainer) containerGroup := containersGroup.Group("/:name") containerGroup.Put("/status", containerController.UpdateContainerStatus) containerGroup.Delete("/", containerController.DeleteContainer) return nil }