Skip to content
Prev Previous commit
Next Next commit
feat: added FetchPhaseSecret to fetch a single secret based on keydigest
  • Loading branch information
nimish-ks committed Feb 14, 2024
commit 49963ab2e86deda7e2636e2a1c1f010cd74de7b6
38 changes: 38 additions & 0 deletions pkg/api/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,44 @@ func FetchPhaseSecrets(appToken, environmentID, host string) ([]map[string]inter
return secrets, nil
}

func FetchPhaseSecret(appToken, environmentID, host, keyDigest string) (map[string]interface{}, error) {
client := createHTTPClient()
url := fmt.Sprintf("%s/service/secrets/", host)

req, err := http.NewRequest("GET", url, nil)
if err != nil {
return nil, err
}

// Set headers
req.Header = ConstructHTTPHeaders(appToken)
req.Header.Set("Environment", environmentID)
req.Header.Set("KeyDigest", keyDigest)

resp, err := client.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()

if err := handleHTTPResponse(resp); err != nil {
return nil, err
}

// Adjust to decode an array of secrets
var secrets []map[string]interface{}
if err := json.NewDecoder(resp.Body).Decode(&secrets); err != nil {
return nil, fmt.Errorf("failed to decode JSON response: %v", err)
}

// Assuming the array always contains exactly one secret when successful
if len(secrets) > 0 {
return secrets[0], nil
}

return nil, fmt.Errorf("no secrets found in the response")
}


func CreatePhaseSecrets(appToken, environmentID string, secrets []map[string]interface{}, host string) error {
client := createHTTPClient()
Expand Down