52 lines
1.7 KiB
Go
52 lines
1.7 KiB
Go
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
|
|
}
|