Files
akvorado/orchestrator/http.go
2025-07-29 07:42:49 +02:00

44 lines
964 B
Go

// SPDX-FileCopyrightText: 2022 Free Mobile
// SPDX-License-Identifier: AGPL-3.0-only
package orchestrator
import (
"net/http"
"strconv"
"github.com/gin-gonic/gin"
)
func (c *Component) configurationHandlerFunc(gc *gin.Context) {
service := gc.Param("service")
indexStr := gc.Param("index")
index, err := strconv.Atoi(indexStr)
if indexStr != "" && err != nil {
gc.JSON(http.StatusNotFound, gin.H{"message": "Invalid configuration index."})
return
}
c.serviceLock.Lock()
var configuration any
serviceConfigurations, ok := c.serviceConfigurations[ServiceType(service)]
if ok {
l := len(serviceConfigurations)
switch {
case l == 0:
ok = false
case index < l:
configuration = serviceConfigurations[index]
default:
configuration = serviceConfigurations[0]
}
}
c.serviceLock.Unlock()
if !ok {
gc.JSON(http.StatusNotFound, gin.H{"message": "Configuration not found."})
return
}
gc.YAML(http.StatusOK, configuration)
}