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 }