package servers import ( "fmt" "git.acooldomain.co/server-manager/backend/auth" "git.acooldomain.co/server-manager/backend/factories" instancemanager "git.acooldomain.co/server-manager/backend/instancemanager" "git.acooldomain.co/server-manager/backend/models" "github.com/gin-gonic/gin" ) type ImageData struct { Id string `json:"Id"` Name string `json:"Name"` Version string `json:"Version"` DisplayName string `json:"DisplayName"` } func convertImageToImageData(instanceImage instancemanager.Image) *ImageData { return &ImageData{ Id: instanceImage.Id, Name: instanceImage.Registry, Version: instanceImage.Tag, DisplayName: fmt.Sprintf("%s %s", instanceImage.Registry, instanceImage.Tag), } } func (con ServersApi) GetImages(ctx *gin.Context) { images, err := con.InstanceManager.ListImages(ctx) if err != nil { ctx.AbortWithError(500, err) return } imagesData := make([]ImageData, 0, len(images)) for _, imageSummary := range images { imageData := convertImageToImageData(imageSummary) if imageData == nil { continue } imagesData = append(imagesData, *imageData) } ctx.JSON(200, imagesData) } func LoadeImagesGroup(group *gin.RouterGroup, config models.GlobalConfig) { instanceManager, err := factories.GetInstanceManager(config.InstanceManager, config.Domain) if err != nil { panic(err) } serversDbHandler, err := factories.GetServersDbHandler(config.ServersDatabase) if err != nil { panic(err) } serversAuthorizationHandler, err := factories.GetServersAuthorizationDbHandler(config.ServersAuthorizationDatabase) if err != nil { panic(err) } connection := ServersApi{ ServersDbHandler: serversDbHandler, ServerAuthorization: serversAuthorizationHandler, InstanceManager: instanceManager, } group.GET("", auth.AuthorizedTo(0), auth.AuthorizationEnforcer(), connection.GetImages) }