in compliance/kibana.go [200:232]
func (k *Kibana) getPolicyForName(name string) (*agentPolicyRequest, error) {
req, err := k.newRequest(http.MethodGet, apiAgentPolicyPath, nil)
if err != nil {
return nil, err
}
query := req.URL.Query()
query.Add("kuery", fmt.Sprintf(`name:"%s"`, k.buildPolicyName(name)))
req.URL.RawQuery = query.Encode()
resp, err := k.client.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
respBody, err := io.ReadAll(resp.Body)
if err != nil {
return nil, fmt.Errorf("failed to read response body (status: %d)", resp.StatusCode)
}
return nil, fmt.Errorf("looking for policy failed with status %d, body: %q", resp.StatusCode, string(respBody))
}
var policiesResponse agentPolicyResponse
err = json.NewDecoder(resp.Body).Decode(&policiesResponse)
if err != nil {
return nil, err
}
if len(policiesResponse.Items) == 0 {
return nil, nil
}
return &policiesResponse.Items[0], nil
}