Added events feature + rewrote router.go api/v1

This commit is contained in:
2023-06-11 12:09:27 +02:00
parent 7c111f97ab
commit 77ac3e548d
7 changed files with 95 additions and 14 deletions

View File

@ -2,10 +2,13 @@ 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"
"git.cesium.pw/niku/virteen/internal/podman/models"
"git.cesium.pw/niku/virteen/internal/podman/services"
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"
@ -14,30 +17,35 @@ import (
func ConfigureRoutes(router fiber.Router) error {
v1 := router.Group("/v1")
ac := auth.NewPamAuthController()
ag := v1.Group("/auth")
ag.Post("/token", ac.GetToken)
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())
var cs models.PodmanService
cs, err := services.NewPodmanContainerService()
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"))
}
cc := podman.NewPodmanController(&cs)
containerController := podman.NewPodmanController(&cs)
cg := v1.Group("/containers")
cg.Get("/", cc.ListContainers)
cg.Post("/", cc.CreateContainer)
containersGroup := v1.Group("/containers")
containersGroup.Get("/", containerController.ListContainers)
containersGroup.Post("/", containerController.CreateContainer)
ccg := cg.Group("/:name")
ccg.Put("/status", cc.UpdateContainerStatus)
ccg.Delete("/", cc.DeleteContainer)
containerGroup := containersGroup.Group("/:name")
containerGroup.Put("/status", containerController.UpdateContainerStatus)
containerGroup.Delete("/", containerController.DeleteContainer)
return nil
}