in compliance/kibana.go [444:480]
func (k *Kibana) getDetectionRuleID(detectionRuleID string) (*detectionRuleResponse, error) {
apiPath, err := url.Parse(apiGetDetecionRulePath)
if err != nil {
return nil, err
}
req, err := k.newRequest(http.MethodGet, apiPath.String(), nil)
if err != nil {
return nil, err
}
params := map[string]string{
"rule_id": detectionRuleID,
}
req = addRequestParams(req, params)
resp, err := k.client.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
if resp.StatusCode >= 400 {
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("request failed with status %d, body: %s", resp.StatusCode, string(respBody))
}
var detectionRule detectionRuleResponse
err = json.NewDecoder(resp.Body).Decode(&detectionRule)
if err != nil {
return nil, err
}
return &detectionRule, nil
}