github.com/kubeshop/testkube@v1.17.23/internal/app/api/v1/secret.go (about)

     1  package v1
     2  
     3  import (
     4  	"fmt"
     5  	"net/http"
     6  	"strconv"
     7  
     8  	"github.com/gofiber/fiber/v2"
     9  
    10  	"github.com/kubeshop/testkube/pkg/api/v1/testkube"
    11  )
    12  
    13  // ListSecretsHandler list secrets and keys
    14  func (s TestkubeAPI) ListSecretsHandler() fiber.Handler {
    15  	return func(c *fiber.Ctx) error {
    16  		errPrefix := "failed to list secrets"
    17  
    18  		all, err := strconv.ParseBool(c.Query("all", "false"))
    19  		if err != nil {
    20  			return s.Error(c, http.StatusBadRequest, fmt.Errorf("%s: could not parse all parameter: %s", errPrefix, err))
    21  		}
    22  
    23  		list, err := s.SecretClient.List(all, c.Query("namespace"))
    24  		if err != nil {
    25  			return s.Error(c, http.StatusBadGateway, fmt.Errorf("%s: client could not list secrets: %s", errPrefix, err))
    26  		}
    27  
    28  		results := make([]testkube.Secret, 0)
    29  		for name, values := range list {
    30  			keys := make([]string, 0)
    31  			for value := range values {
    32  				keys = append(keys, value)
    33  			}
    34  
    35  			results = append(results, testkube.Secret{Name: name, Keys: keys})
    36  		}
    37  
    38  		return c.JSON(results)
    39  	}
    40  }