github.com/akamai/AkamaiOPEN-edgegrid-golang/v8@v8.1.0/pkg/appsec/siem_definitions.go (about) 1 package appsec 2 3 import ( 4 "context" 5 "fmt" 6 "net/http" 7 ) 8 9 type ( 10 // The SiemDefinitions interface supports retrieving the available SIEM versions. 11 SiemDefinitions interface { 12 // GetSiemDefinitions gets available SIEM versions. 13 // 14 // See: https://techdocs.akamai.com/application-security/reference/get-siem-definitions 15 GetSiemDefinitions(ctx context.Context, params GetSiemDefinitionsRequest) (*GetSiemDefinitionsResponse, error) 16 } 17 18 // GetSiemDefinitionsRequest is used to retrieve the available SIEM versions. 19 GetSiemDefinitionsRequest struct { 20 ID int `json:"id"` 21 SiemDefinitionName string `json:"name"` 22 } 23 24 // GetSiemDefinitionsResponse is returned from a call to GetSiemDefinitions. 25 GetSiemDefinitionsResponse struct { 26 SiemDefinitions []struct { 27 ID int `json:"id"` 28 Name string `json:"name"` 29 } `json:"siemDefinitions"` 30 } 31 ) 32 33 func (p *appsec) GetSiemDefinitions(ctx context.Context, params GetSiemDefinitionsRequest) (*GetSiemDefinitionsResponse, error) { 34 logger := p.Log(ctx) 35 logger.Debug("GetSiemDefinitions") 36 37 uri := "/appsec/v1/siem-definitions" 38 39 req, err := http.NewRequestWithContext(ctx, http.MethodGet, uri, nil) 40 if err != nil { 41 return nil, fmt.Errorf("failed to create GetSiemDefinitions request: %w", err) 42 } 43 44 var result GetSiemDefinitionsResponse 45 resp, err := p.Exec(req, &result) 46 if err != nil { 47 return nil, fmt.Errorf("get siem definitions request failed: %w", err) 48 } 49 if resp.StatusCode != http.StatusOK { 50 return nil, p.Error(resp) 51 } 52 53 if params.SiemDefinitionName != "" { 54 var filteredResult GetSiemDefinitionsResponse 55 for _, val := range result.SiemDefinitions { 56 if val.Name == params.SiemDefinitionName { 57 filteredResult.SiemDefinitions = append(filteredResult.SiemDefinitions, val) 58 } 59 } 60 return &filteredResult, nil 61 } 62 63 return &result, nil 64 }