From 886f1ee992f89516fc3f76632f8c634b2a839006 Mon Sep 17 00:00:00 2001 From: Albert Gierlach Date: Mon, 4 Jul 2022 07:02:12 +0000 Subject: [PATCH 01/12] Pull request #387: DD-11180 Add Custom Header and Content-Type for certain connectors Merge in DEVEXP/akamaiopen-edgegrid-golang from feature/DD-11180-support-for-custom-headers to feature/DD-11179-add-support-for-new-DS-functionalities --- pkg/datastream/connectors.go | 42 +++++++--- pkg/datastream/connectors_test.go | 123 ++++++++++++++++++++++++++++++ pkg/datastream/stream.go | 3 + pkg/datastream/stream_test.go | 34 ++++++--- 4 files changed, 183 insertions(+), 19 deletions(-) create mode 100644 pkg/datastream/connectors_test.go diff --git a/pkg/datastream/connectors.go b/pkg/datastream/connectors.go index 10a23f4e..d5349ab2 100644 --- a/pkg/datastream/connectors.go +++ b/pkg/datastream/connectors.go @@ -1,6 +1,10 @@ package datastream -import validation "github.com/go-ozzo/ozzo-validation/v4" +import ( + "regexp" + + validation "github.com/go-ozzo/ozzo-validation/v4" +) type ( // S3Connector provides details about the Amazon S3 connector in a stream @@ -47,6 +51,8 @@ type ( ConnectorName string `json:"connectorName"` EventCollectorToken string `json:"eventCollectorToken"` URL string `json:"url"` + CustomHeaderName string `json:"customHeaderName,omitempty"` + CustomHeaderValue string `json:"customHeaderValue,omitempty"` } // GCSConnector provides detailed information about the Google Cloud Storage connector @@ -71,16 +77,22 @@ type ( Password string `json:"password,omitempty"` URL string `json:"url"` UserName string `json:"userName,omitempty"` + ContentType string `json:"contentType,omitempty"` + CustomHeaderName string `json:"customHeaderName,omitempty"` + CustomHeaderValue string `json:"customHeaderValue,omitempty"` } // SumoLogicConnector provides detailed information about the Sumo Logic connector // See: https://developer.akamai.com/api/core_features/datastream2_config/v1.html#sumologic SumoLogicConnector struct { - ConnectorType ConnectorType `json:"connectorType"` - CollectorCode string `json:"collectorCode"` - CompressLogs bool `json:"compressLogs"` - ConnectorName string `json:"connectorName"` - Endpoint string `json:"endpoint"` + ConnectorType ConnectorType `json:"connectorType"` + CollectorCode string `json:"collectorCode"` + CompressLogs bool `json:"compressLogs"` + ConnectorName string `json:"connectorName"` + Endpoint string `json:"endpoint"` + ContentType string `json:"contentType,omitempty"` + CustomHeaderName string `json:"customHeaderName,omitempty"` + CustomHeaderValue string `json:"customHeaderValue,omitempty"` } // OracleCloudStorageConnector provides details about the Oracle Cloud Storage connector @@ -127,6 +139,8 @@ const ( AuthenticationTypeBasic AuthenticationType = "BASIC" ) +var customHeaderNameRegexp = regexp.MustCompile("^[A-Za-z0-9_-]+$") + // SetConnectorType for S3Connector func (c *S3Connector) SetConnectorType() { c.ConnectorType = ConnectorTypeS3 @@ -189,6 +203,8 @@ func (c *SplunkConnector) Validate() error { "ConnectorName": validation.Validate(c.ConnectorName, validation.Required), "EventCollectorToken": validation.Validate(c.EventCollectorToken, validation.Required), "URL": validation.Validate(c.URL, validation.Required), + "CustomHeaderName": validation.Validate(c.CustomHeaderName, validation.Required.When(c.CustomHeaderValue != ""), validation.When(c.CustomHeaderName != "", validation.Match(customHeaderNameRegexp))), + "CustomHeaderValue": validation.Validate(c.CustomHeaderValue, validation.Required.When(c.CustomHeaderName != "")), }.Filter() } @@ -221,6 +237,10 @@ func (c *CustomHTTPSConnector) Validate() error { "AuthenticationType": validation.Validate(c.AuthenticationType, validation.Required, validation.In(AuthenticationTypeBasic, AuthenticationTypeNone)), "ConnectorName": validation.Validate(c.ConnectorName, validation.Required), "URL": validation.Validate(c.URL, validation.Required), + "UserName": validation.Validate(c.UserName, validation.Required.When(c.AuthenticationType == AuthenticationTypeBasic)), + "Password": validation.Validate(c.Password, validation.Required.When(c.AuthenticationType == AuthenticationTypeBasic)), + "CustomHeaderName": validation.Validate(c.CustomHeaderName, validation.Required.When(c.CustomHeaderValue != ""), validation.When(c.CustomHeaderName != "", validation.Match(customHeaderNameRegexp))), + "CustomHeaderValue": validation.Validate(c.CustomHeaderValue, validation.Required.When(c.CustomHeaderName != "")), }.Filter() } @@ -232,10 +252,12 @@ func (c *SumoLogicConnector) SetConnectorType() { // Validate validates SumoLogicConnector func (c *SumoLogicConnector) Validate() error { return validation.Errors{ - "ConnectorType": validation.Validate(c.ConnectorType, validation.Required, validation.In(ConnectorTypeSumoLogic)), - "CollectorCode": validation.Validate(c.CollectorCode, validation.Required), - "ConnectorName": validation.Validate(c.ConnectorName, validation.Required), - "Endpoint": validation.Validate(c.Endpoint, validation.Required), + "ConnectorType": validation.Validate(c.ConnectorType, validation.Required, validation.In(ConnectorTypeSumoLogic)), + "CollectorCode": validation.Validate(c.CollectorCode, validation.Required), + "ConnectorName": validation.Validate(c.ConnectorName, validation.Required), + "Endpoint": validation.Validate(c.Endpoint, validation.Required), + "CustomHeaderName": validation.Validate(c.CustomHeaderName, validation.Required.When(c.CustomHeaderValue != ""), validation.When(c.CustomHeaderName != "", validation.Match(customHeaderNameRegexp))), + "CustomHeaderValue": validation.Validate(c.CustomHeaderValue, validation.Required.When(c.CustomHeaderName != "")), }.Filter() } diff --git a/pkg/datastream/connectors_test.go b/pkg/datastream/connectors_test.go new file mode 100644 index 00000000..ec8059d8 --- /dev/null +++ b/pkg/datastream/connectors_test.go @@ -0,0 +1,123 @@ +package datastream + +import ( + "fmt" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestCustomHTPPSValidation(t *testing.T) { + baseConnectorStruct := CustomHTTPSConnector{ + ConnectorName: "Test Connector", + AuthenticationType: AuthenticationTypeNone, + URL: "https://example.com", + } + baseConnectorStruct.SetConnectorType() + + tests := map[string]struct { + connectorBuilder func() CustomHTTPSConnector + expectValidationError bool + }{ + "AuthenticationType not in specified set": { + connectorBuilder: func() CustomHTTPSConnector { + var c = baseConnectorStruct + c.AuthenticationType = "NOTEXISTING" + return c + }, + expectValidationError: true, + }, + "UserName required for auth type BASIC": { + connectorBuilder: func() CustomHTTPSConnector { + var c = baseConnectorStruct + c.AuthenticationType = AuthenticationTypeBasic + c.Password = "password" + return c + }, + expectValidationError: true, + }, + "Password required for auth type BASIC": { + connectorBuilder: func() CustomHTTPSConnector { + var c = baseConnectorStruct + c.AuthenticationType = AuthenticationTypeBasic + c.UserName = "username" + return c + }, + expectValidationError: true, + }, + "UserName and Password not required for type NONE": { + connectorBuilder: func() CustomHTTPSConnector { + var c = baseConnectorStruct + c.AuthenticationType = AuthenticationTypeNone + return c + }, + expectValidationError: false, + }, + "UserName and Password required for type BASIC": { + connectorBuilder: func() CustomHTTPSConnector { + var c = baseConnectorStruct + c.AuthenticationType = AuthenticationTypeBasic + return c + }, + expectValidationError: true, + }, + "CustomHeaderName specified without CustomHeaderValue": { + connectorBuilder: func() CustomHTTPSConnector { + var c = baseConnectorStruct + c.CustomHeaderName = "Custom_Name" + return c + }, + expectValidationError: true, + }, + "CustomHeaderValue specified without CustomHeaderName": { + connectorBuilder: func() CustomHTTPSConnector { + var c = baseConnectorStruct + c.CustomHeaderValue = "Custom header value" + return c + }, + expectValidationError: true, + }, + "CustomHeaderValue and CustomHeaderName both specified": { + connectorBuilder: func() CustomHTTPSConnector { + var c = baseConnectorStruct + c.CustomHeaderName = "Custom_Name" + c.CustomHeaderValue = "Custom header value" + return c + }, + expectValidationError: false, + }, + "CustomHeaderName contains forbidden characters": { + connectorBuilder: func() CustomHTTPSConnector { + var c = baseConnectorStruct + c.CustomHeaderName = "azAZ09_-!?>" + c.CustomHeaderValue = "Custom header value" + return c + }, + expectValidationError: true, + }, + "CustomHeaderName contains only allowed characters": { + connectorBuilder: func() CustomHTTPSConnector { + var c = baseConnectorStruct + c.CustomHeaderName = "azAZ09_-" + c.CustomHeaderValue = "Custom header value" + return c + }, + expectValidationError: false, + }, + "CustomHeaderValue and CustomHeaderName are optional": { + connectorBuilder: func() CustomHTTPSConnector { + return baseConnectorStruct + }, + expectValidationError: false, + }, + } + + for name, test := range tests { + t.Run(name, func(t *testing.T) { + connectorStructure := test.connectorBuilder() + err := connectorStructure.Validate() + fmt.Println(err) + assert.True(t, (err != nil) == test.expectValidationError, err) + }) + } +} diff --git a/pkg/datastream/stream.go b/pkg/datastream/stream.go index 8dc71d42..4ac27da5 100644 --- a/pkg/datastream/stream.go +++ b/pkg/datastream/stream.go @@ -81,6 +81,9 @@ type ( Namespace string `json:"namespace"` ContainerName string `json:"containerName"` Source string `json:"source"` + ContentType string `json:"contentType"` + CustomHeaderName string `json:"customHeaderName"` + CustomHeaderValue string `json:"customHeaderValue"` } // StreamConfiguration is used in CreateStream as a request body diff --git a/pkg/datastream/stream_test.go b/pkg/datastream/stream_test.go index 41226934..5687e557 100644 --- a/pkg/datastream/stream_test.go +++ b/pkg/datastream/stream_test.go @@ -837,6 +837,8 @@ func TestDs_Connectors(t *testing.T) { URL: "testURL", EventCollectorToken: "testEventCollector", CompressLogs: true, + CustomHeaderName: "custom-header", + CustomHeaderValue: "custom-header-value", }, expectedJSON: ` [{ @@ -844,7 +846,9 @@ func TestDs_Connectors(t *testing.T) { "url": "testURL", "eventCollectorToken": "testEventCollector", "connectorType": "SPLUNK", - "compressLogs": true + "compressLogs": true, + "customHeaderName": "custom-header", + "customHeaderValue": "custom-header-value" }] `, }, @@ -871,31 +875,40 @@ func TestDs_Connectors(t *testing.T) { }, "CustomHTTPSConnector": { connector: &CustomHTTPSConnector{ - AuthenticationType: AuthenticationTypeNone, + AuthenticationType: AuthenticationTypeBasic, ConnectorName: "testConnectorName", URL: "testURL", UserName: "testUserName", Password: "testPassword", CompressLogs: true, + CustomHeaderName: "custom-header", + CustomHeaderValue: "custom-header-value", + ContentType: "application/json", }, expectedJSON: ` [{ - "authenticationType": "NONE", + "authenticationType": "BASIC", "connectorName": "testConnectorName", "url": "testURL", "userName": "testUserName", "password": "testPassword", "connectorType": "HTTPS", - "compressLogs": true + "compressLogs": true, + "customHeaderName": "custom-header", + "customHeaderValue": "custom-header-value", + "contentType": "application/json" }] `, }, "SumoLogicConnector": { connector: &SumoLogicConnector{ - ConnectorName: "testConnectorName", - Endpoint: "testEndpoint", - CollectorCode: "testCollectorCode", - CompressLogs: true, + ConnectorName: "testConnectorName", + Endpoint: "testEndpoint", + CollectorCode: "testCollectorCode", + CompressLogs: true, + CustomHeaderName: "custom-header", + CustomHeaderValue: "custom-header-value", + ContentType: "application/json", }, expectedJSON: ` [{ @@ -903,7 +916,10 @@ func TestDs_Connectors(t *testing.T) { "connectorName": "testConnectorName", "endpoint": "testEndpoint", "collectorCode": "testCollectorCode", - "compressLogs": true + "compressLogs": true, + "customHeaderName": "custom-header", + "customHeaderValue": "custom-header-value", + "contentType": "application/json" }] `, }, From 2e521b4d37f7d5c47c9f174d1f20aeb8e5bc7035 Mon Sep 17 00:00:00 2001 From: Mateusz Gwozdz Date: Thu, 11 Aug 2022 12:14:53 +0000 Subject: [PATCH 02/12] Pull request #414: DD-11181 add support for client certificates to terraform Merge in DEVEXP/akamaiopen-edgegrid-golang from feature/DD-11181-add-support-for-client-certificates-to-terraform to feature/DD-11179-add-support-for-new-DS-functionalities --- pkg/datastream/connectors.go | 8 ++++++++ pkg/datastream/stream.go | 2 ++ 2 files changed, 10 insertions(+) diff --git a/pkg/datastream/connectors.go b/pkg/datastream/connectors.go index d5349ab2..1aeb813e 100644 --- a/pkg/datastream/connectors.go +++ b/pkg/datastream/connectors.go @@ -53,6 +53,10 @@ type ( URL string `json:"url"` CustomHeaderName string `json:"customHeaderName,omitempty"` CustomHeaderValue string `json:"customHeaderValue,omitempty"` + TLSHostname string `json:"tlsHostname,omitempty"` + CACert string `json:"caCert,omitempty"` + ClientCert string `json:"clientCert,omitempty"` + ClientKey string `json:"clientKey,omitempty"` } // GCSConnector provides detailed information about the Google Cloud Storage connector @@ -80,6 +84,10 @@ type ( ContentType string `json:"contentType,omitempty"` CustomHeaderName string `json:"customHeaderName,omitempty"` CustomHeaderValue string `json:"customHeaderValue,omitempty"` + TLSHostname string `json:"tlsHostname,omitempty"` + CACert string `json:"caCert,omitempty"` + ClientCert string `json:"clientCert,omitempty"` + ClientKey string `json:"clientKey,omitempty"` } // SumoLogicConnector provides detailed information about the Sumo Logic connector diff --git a/pkg/datastream/stream.go b/pkg/datastream/stream.go index 4ac27da5..83575864 100644 --- a/pkg/datastream/stream.go +++ b/pkg/datastream/stream.go @@ -84,6 +84,8 @@ type ( ContentType string `json:"contentType"` CustomHeaderName string `json:"customHeaderName"` CustomHeaderValue string `json:"customHeaderValue"` + TLSHostname string `json:"tlsHostname"` + MTLS string `json:"mTLS"` } // StreamConfiguration is used in CreateStream as a request body From 761531c2b246395b03d0164eeab3de51fb2faa67 Mon Sep 17 00:00:00 2001 From: Mateusz Gwozdz Date: Thu, 25 Aug 2022 11:58:54 +0000 Subject: [PATCH 03/12] Pull request #431: DD-11182 add Loggly Merge in DEVEXP/akamaiopen-edgegrid-golang from feature/DD-11182-add-support-for-loggly-to-terraform-provider to feature/DD-11179-add-support-for-new-DS-functionalities --- pkg/datastream/connectors.go | 32 ++++++++++++++++++++++++++++++++ pkg/datastream/stream_test.go | 23 +++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/pkg/datastream/connectors.go b/pkg/datastream/connectors.go index 1aeb813e..31ea00a5 100644 --- a/pkg/datastream/connectors.go +++ b/pkg/datastream/connectors.go @@ -116,6 +116,19 @@ type ( SecretAccessKey string `json:"secretAccessKey"` } + // LogglyConnector contains details about Loggly connector. + // See: https://techdocs.akamai.com/datastream2/reference/post-stream + LogglyConnector struct { + ConnectorType ConnectorType `json:"connectorType"` + ConnectorName string `json:"connectorName"` + Endpoint string `json:"endpoint"` + AuthToken string `json:"authToken"` + Tags string `json:"tags,omitempty"` + ContentType string `json:"contentType,omitempty"` + CustomHeaderName string `json:"customHeaderName,omitempty"` + CustomHeaderValue string `json:"customHeaderValue,omitempty"` + } + // ConnectorType is used to create an "enum" of possible ConnectorTypes ConnectorType string @@ -140,6 +153,8 @@ const ( ConnectorTypeSumoLogic ConnectorType = "SUMO_LOGIC" // ConnectorTypeOracle const ConnectorTypeOracle ConnectorType = "Oracle_Cloud_Storage" + // ConnectorTypeLoggly const + ConnectorTypeLoggly ConnectorType = "LOGGLY" // AuthenticationTypeNone const AuthenticationTypeNone AuthenticationType = "NONE" @@ -287,3 +302,20 @@ func (c *OracleCloudStorageConnector) Validate() error { "SecretAccessKey": validation.Validate(c.SecretAccessKey, validation.Required), }.Filter() } + +// SetConnectorType for LogglyConnector +func (c *LogglyConnector) SetConnectorType() { + c.ConnectorType = ConnectorTypeLoggly +} + +// Validate validates LogglyConnector +func (c *LogglyConnector) Validate() error { + return validation.Errors{ + "ConnectorType": validation.Validate(c.ConnectorType, validation.Required, validation.In(ConnectorTypeLoggly)), + "ConnectorName": validation.Validate(c.ConnectorName, validation.Required), + "Endpoint": validation.Validate(c.Endpoint, validation.Required), + "AuthToken": validation.Validate(c.AuthToken, validation.Required), + "CustomHeaderName": validation.Validate(c.CustomHeaderName, validation.Required.When(c.CustomHeaderValue != ""), validation.When(c.CustomHeaderName != "", validation.Match(customHeaderNameRegexp))), + "CustomHeaderValue": validation.Validate(c.CustomHeaderValue, validation.Required.When(c.CustomHeaderName != "")), + }.Filter() +} diff --git a/pkg/datastream/stream_test.go b/pkg/datastream/stream_test.go index 5687e557..bcab1962 100644 --- a/pkg/datastream/stream_test.go +++ b/pkg/datastream/stream_test.go @@ -946,6 +946,29 @@ func TestDs_Connectors(t *testing.T) { }] `, }, + "LogglyConnector": { + connector: &LogglyConnector{ + ConnectorName: "testConnectorName", + Endpoint: "testEndpoint", + AuthToken: "testAuthToken", + Tags: "testTags", + ContentType: "testContentType", + CustomHeaderName: "testCustomHeaderName", + CustomHeaderValue: "testCustomHeaderValue", + }, + expectedJSON: ` +[{ + "connectorType": "LOGGLY", + "connectorName": "testConnectorName", + "endpoint": "testEndpoint", + "authToken": "testAuthToken", + "tags": "testTags", + "contentType": "testContentType", + "customHeaderName": "testCustomHeaderName", + "customHeaderValue": "testCustomHeaderValue" +}] + `, + }, } request := CreateStreamRequest{ From c34ef6f8dd4d8debf0629a7984cde349d3fc18ec Mon Sep 17 00:00:00 2001 From: Mateusz Gwozdz Date: Wed, 7 Sep 2022 12:05:37 +0000 Subject: [PATCH 04/12] Pull request #443: DD-11183 add New Relic connector Merge in DEVEXP/akamaiopen-edgegrid-golang from feature/DD-11183-add-support-for-new-relic-to-terraform-provider to feature/DD-11179-add-support-for-new-DS-functionalities --- pkg/datastream/connectors.go | 31 +++++++++++++++++++++++++++++++ pkg/datastream/stream_test.go | 21 +++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/pkg/datastream/connectors.go b/pkg/datastream/connectors.go index 31ea00a5..87cfc6ae 100644 --- a/pkg/datastream/connectors.go +++ b/pkg/datastream/connectors.go @@ -129,6 +129,18 @@ type ( CustomHeaderValue string `json:"customHeaderValue,omitempty"` } + // NewRelicConnector connector contains details about New Relic connector. + // See: https://techdocs.akamai.com/datastream2/docs/stream-new-relic + NewRelicConnector struct { + ConnectorType ConnectorType `json:"connectorType"` + ConnectorName string `json:"connectorName"` + Endpoint string `json:"endpoint"` + AuthToken string `json:"authToken"` + ContentType string `json:"contentType,omitempty"` + CustomHeaderName string `json:"customHeaderName,omitempty"` + CustomHeaderValue string `json:"customHeaderValue,omitempty"` + } + // ConnectorType is used to create an "enum" of possible ConnectorTypes ConnectorType string @@ -155,6 +167,8 @@ const ( ConnectorTypeOracle ConnectorType = "Oracle_Cloud_Storage" // ConnectorTypeLoggly const ConnectorTypeLoggly ConnectorType = "LOGGLY" + // ConnectorTypeNewRelic const + ConnectorTypeNewRelic ConnectorType = "NEWRELIC" // AuthenticationTypeNone const AuthenticationTypeNone AuthenticationType = "NONE" @@ -319,3 +333,20 @@ func (c *LogglyConnector) Validate() error { "CustomHeaderValue": validation.Validate(c.CustomHeaderValue, validation.Required.When(c.CustomHeaderName != "")), }.Filter() } + +// SetConnectorType for NewRelicConnector +func (c *NewRelicConnector) SetConnectorType() { + c.ConnectorType = ConnectorTypeNewRelic +} + +// Validate validates NewRelicConnector +func (c *NewRelicConnector) Validate() error { + return validation.Errors{ + "ConnectorType": validation.Validate(c.ConnectorType, validation.Required, validation.In(ConnectorTypeNewRelic)), + "ConnectorName": validation.Validate(c.ConnectorName, validation.Required), + "Endpoint": validation.Validate(c.Endpoint, validation.Required), + "AuthToken": validation.Validate(c.AuthToken, validation.Required), + "CustomHeaderName": validation.Validate(c.CustomHeaderName, validation.Required.When(c.CustomHeaderValue != ""), validation.When(c.CustomHeaderName != "", validation.Match(customHeaderNameRegexp))), + "CustomHeaderValue": validation.Validate(c.CustomHeaderValue, validation.Required.When(c.CustomHeaderName != "")), + }.Filter() +} diff --git a/pkg/datastream/stream_test.go b/pkg/datastream/stream_test.go index bcab1962..f30012db 100644 --- a/pkg/datastream/stream_test.go +++ b/pkg/datastream/stream_test.go @@ -966,6 +966,27 @@ func TestDs_Connectors(t *testing.T) { "contentType": "testContentType", "customHeaderName": "testCustomHeaderName", "customHeaderValue": "testCustomHeaderValue" +}] + `, + }, + "NewRelicConnector": { + connector: &NewRelicConnector{ + ConnectorName: "testConnectorName", + Endpoint: "testEndpoint", + AuthToken: "testAuthToken", + ContentType: "testContentType", + CustomHeaderName: "testCustomHeaderName", + CustomHeaderValue: "testCustomHeaderValue", + }, + expectedJSON: ` +[{ + "connectorType": "NEWRELIC", + "connectorName": "testConnectorName", + "endpoint": "testEndpoint", + "authToken": "testAuthToken", + "contentType": "testContentType", + "customHeaderName": "testCustomHeaderName", + "customHeaderValue": "testCustomHeaderValue" }] `, }, From b7bf78831f1614e403847610dbc2a5c06200b495 Mon Sep 17 00:00:00 2001 From: Mateusz Gwozdz Date: Thu, 22 Sep 2022 15:20:06 +0000 Subject: [PATCH 05/12] Pull request #455: DD-11184 add Elasticsearch connector Merge in DEVEXP/akamaiopen-edgegrid-golang from feature/DD-11184-add-support-for-elasticsearch-to-terraform-provider to feature/DD-11179-add-support-for-new-DS-functionalities --- pkg/datastream/connectors.go | 39 +++++++++++++++++++++++++++++++++++ pkg/datastream/stream.go | 1 + pkg/datastream/stream_test.go | 33 +++++++++++++++++++++++++++++ 3 files changed, 73 insertions(+) diff --git a/pkg/datastream/connectors.go b/pkg/datastream/connectors.go index 87cfc6ae..49674ada 100644 --- a/pkg/datastream/connectors.go +++ b/pkg/datastream/connectors.go @@ -141,6 +141,24 @@ type ( CustomHeaderValue string `json:"customHeaderValue,omitempty"` } + // ElasticsearchConnector contains details about Elasticsearch connector. + // See: https://techdocs.akamai.com/datastream2/docs/stream-elasticsearch + ElasticsearchConnector struct { + ConnectorType ConnectorType `json:"connectorType"` + ConnectorName string `json:"connectorName"` + Endpoint string `json:"endpoint"` + IndexName string `json:"indexName"` + UserName string `json:"userName"` + Password string `json:"password"` + ContentType string `json:"contentType,omitempty"` + CustomHeaderName string `json:"customHeaderName,omitempty"` + CustomHeaderValue string `json:"customHeaderValue,omitempty"` + TLSHostname string `json:"tlsHostname,omitempty"` + CACert string `json:"caCert,omitempty"` + ClientCert string `json:"clientCert,omitempty"` + ClientKey string `json:"clientKey,omitempty"` + } + // ConnectorType is used to create an "enum" of possible ConnectorTypes ConnectorType string @@ -169,6 +187,8 @@ const ( ConnectorTypeLoggly ConnectorType = "LOGGLY" // ConnectorTypeNewRelic const ConnectorTypeNewRelic ConnectorType = "NEWRELIC" + // ConnectorTypeElasticsearch const + ConnectorTypeElasticsearch ConnectorType = "ELASTICSEARCH" // AuthenticationTypeNone const AuthenticationTypeNone AuthenticationType = "NONE" @@ -350,3 +370,22 @@ func (c *NewRelicConnector) Validate() error { "CustomHeaderValue": validation.Validate(c.CustomHeaderValue, validation.Required.When(c.CustomHeaderName != "")), }.Filter() } + +// SetConnectorType for ElasticsearchConnector +func (c *ElasticsearchConnector) SetConnectorType() { + c.ConnectorType = ConnectorTypeElasticsearch +} + +// Validate validates ElasticsearchConnector +func (c *ElasticsearchConnector) Validate() error { + return validation.Errors{ + "ConnectorType": validation.Validate(c.ConnectorType, validation.Required, validation.In(ConnectorTypeElasticsearch)), + "ConnectorName": validation.Validate(c.ConnectorName, validation.Required), + "Endpoint": validation.Validate(c.Endpoint, validation.Required), + "UserName": validation.Validate(c.UserName, validation.Required), + "Password": validation.Validate(c.Password, validation.Required), + "IndexName": validation.Validate(c.IndexName, validation.Required), + "CustomHeaderName": validation.Validate(c.CustomHeaderName, validation.Required.When(c.CustomHeaderValue != ""), validation.When(c.CustomHeaderName != "", validation.Match(customHeaderNameRegexp))), + "CustomHeaderValue": validation.Validate(c.CustomHeaderValue, validation.Required.When(c.CustomHeaderName != "")), + }.Filter() +} diff --git a/pkg/datastream/stream.go b/pkg/datastream/stream.go index 83575864..a7ed7307 100644 --- a/pkg/datastream/stream.go +++ b/pkg/datastream/stream.go @@ -71,6 +71,7 @@ type ( Path string `json:"path"` URL string `json:"url"` Endpoint string `json:"endpoint"` + IndexName string `json:"indexName"` ServiceAccountName string `json:"serviceAccountName"` ProjectID string `json:"projectId"` Service string `json:"service"` diff --git a/pkg/datastream/stream_test.go b/pkg/datastream/stream_test.go index f30012db..d54cb1d9 100644 --- a/pkg/datastream/stream_test.go +++ b/pkg/datastream/stream_test.go @@ -987,6 +987,39 @@ func TestDs_Connectors(t *testing.T) { "contentType": "testContentType", "customHeaderName": "testCustomHeaderName", "customHeaderValue": "testCustomHeaderValue" +}] + `, + }, + "ElasticsearchConnector": { + connector: &ElasticsearchConnector{ + ConnectorName: "testConnectorName", + Endpoint: "testEndpoint", + IndexName: "testIndexName", + UserName: "testUserName", + Password: "testPassword", + ContentType: "testContentType", + CustomHeaderName: "testCustomHeaderName", + CustomHeaderValue: "testCustomHeaderValue", + TLSHostname: "testTLSHostname", + CACert: "testCACert", + ClientCert: "testClientCert", + ClientKey: "testClientKey", + }, + expectedJSON: ` +[{ + "connectorType": "ELASTICSEARCH", + "connectorName": "testConnectorName", + "endpoint": "testEndpoint", + "indexName": "testIndexName", + "userName": "testUserName", + "password": "testPassword", + "contentType": "testContentType", + "customHeaderName": "testCustomHeaderName", + "customHeaderValue": "testCustomHeaderValue", + "tlsHostname": "testTLSHostname", + "caCert": "testCACert", + "clientCert": "testClientCert", + "clientKey": "testClientKey" }] `, }, From f8db2f6f5590de61d39e8da7d9d6a58aff781f6f Mon Sep 17 00:00:00 2001 From: Albert Gierlach Date: Fri, 7 Oct 2022 08:39:31 +0000 Subject: [PATCH 06/12] Pull request #465: DD-12957 DXE-1347 Listing streams endpoint Merge in DEVEXP/akamaiopen-edgegrid-golang from feature/DD-12957-add-akamai_datastreams-data-source to feature/DD-11179-add-support-for-new-DS-functionalities --- pkg/datastream/stream.go | 75 +++++++++- pkg/datastream/stream_test.go | 252 ++++++++++++++++++++++++++++++++++ 2 files changed, 320 insertions(+), 7 deletions(-) diff --git a/pkg/datastream/stream.go b/pkg/datastream/stream.go index a7ed7307..c838269c 100644 --- a/pkg/datastream/stream.go +++ b/pkg/datastream/stream.go @@ -16,27 +16,31 @@ type ( Stream interface { // CreateStream creates a stream // - // See: https://developer.akamai.com/api/core_features/datastream2_config/v1.html#poststreams + // See: https://techdocs.akamai.com/datastream2/reference/post-stream CreateStream(context.Context, CreateStreamRequest) (*StreamUpdate, error) // GetStream gets stream details // - // See: https://developer.akamai.com/api/core_features/datastream2_config/v1.html#getstream + // See: https://techdocs.akamai.com/datastream2/reference/get-stream GetStream(context.Context, GetStreamRequest) (*DetailedStreamVersion, error) // UpdateStream updates a stream // - // See: https://developer.akamai.com/api/core_features/datastream2_config/v1.html#putstream + // See: https://techdocs.akamai.com/datastream2/reference/put-stream UpdateStream(context.Context, UpdateStreamRequest) (*StreamUpdate, error) // DeleteStream deletes a stream // - // See: https://developer.akamai.com/api/core_features/datastream2_config/v1.html#deletestream + // See: https://techdocs.akamai.com/datastream2/reference/delete-stream DeleteStream(context.Context, DeleteStreamRequest) (*DeleteStreamResponse, error) + + // ListStreams retrieves list of streams + // + // See: https://techdocs.akamai.com/datastream2/reference/get-streams + ListStreams(context.Context, ListStreamsRequest) ([]StreamDetails, error) } // DetailedStreamVersion is returned from GetStream - // See: https://developer.akamai.com/api/core_features/datastream2_config/v1.html#detailedstreamversion DetailedStreamVersion struct { ActivationStatus ActivationStatus `json:"activationStatus"` Config Config `json:"config"` @@ -90,7 +94,6 @@ type ( } // StreamConfiguration is used in CreateStream as a request body - // See: https://developer.akamai.com/api/core_features/datastream2_config/v1.html#streamconfigurationcf8299f3 StreamConfiguration struct { ActivateNow bool `json:"activateNow"` Config Config `json:"config"` @@ -106,7 +109,6 @@ type ( } // Config of the configuration of log lines, names of the files sent to a destination, and delivery frequency for these files - // See: https://developer.akamai.com/api/core_features/datastream2_config/v1.html#e6140e78 Config struct { Delimiter *DelimiterType `json:"delimiter,omitempty"` Format FormatType `json:"format,omitempty"` @@ -213,6 +215,30 @@ type ( DeleteStreamResponse struct { Message string `json:"message"` } + + // ListStreamsRequest is passed to ListStreams + ListStreamsRequest struct { + GroupID *int + } + + // StreamDetails list is returned from ListStreams method + StreamDetails struct { + ActivationStatus ActivationStatus `json:"activationStatus"` + Archived bool `json:"archived"` + Connectors string `json:"connectors"` + ContractID string `json:"contractId"` + CreatedBy string `json:"createdBy"` + CreatedDate string `json:"createdDate"` + CurrentVersionID int64 `json:"currentVersionId"` + Errors []Errors `json:"errors"` + GroupID int `json:"groupId"` + GroupName string `json:"groupName"` + Properties []Property `json:"properties"` + StreamID int64 `json:"streamId"` + StreamName string `json:"streamName"` + StreamTypeName string `json:"streamTypeName"` + StreamVersionID int64 `json:"streamVersionId"` + } ) const ( @@ -308,6 +334,8 @@ var ( ErrUpdateStream = errors.New("updating stream") // ErrDeleteStream represents error when deleting stream fails ErrDeleteStream = errors.New("deleting stream") + // ErrListStreams represents error when listing streams fails + ErrListStreams = errors.New("listing streams") ) func (d *ds) CreateStream(ctx context.Context, params CreateStreamRequest) (*StreamUpdate, error) { @@ -447,6 +475,39 @@ func (d *ds) DeleteStream(ctx context.Context, params DeleteStreamRequest) (*Del return &rval, nil } +func (d *ds) ListStreams(ctx context.Context, params ListStreamsRequest) ([]StreamDetails, error) { + logger := d.Log(ctx) + logger.Debug("ListStreams") + + uri, err := url.Parse("/datastream-config-api/v1/log/streams") + if err != nil { + return nil, fmt.Errorf("%w: failed to parse url: %s", ErrListStreams, err) + } + + q := uri.Query() + if params.GroupID != nil { + q.Add("groupId", fmt.Sprintf("%d", *params.GroupID)) + } + + uri.RawQuery = q.Encode() + req, err := http.NewRequestWithContext(ctx, http.MethodGet, uri.String(), nil) + if err != nil { + return nil, fmt.Errorf("%w: failed to create request: %s", ErrListStreams, err) + } + + var result []StreamDetails + resp, err := d.Exec(req, &result) + if err != nil { + return nil, fmt.Errorf("%w: request failed: %s", ErrListStreams, err) + } + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("%s: %w", ErrListStreams, d.Error(resp)) + } + + return result, nil +} + func setConnectorTypes(configuration *StreamConfiguration) { for _, connector := range configuration.Connectors { connector.SetConnectorType() diff --git a/pkg/datastream/stream_test.go b/pkg/datastream/stream_test.go index d54cb1d9..b6fc9b3e 100644 --- a/pkg/datastream/stream_test.go +++ b/pkg/datastream/stream_test.go @@ -1120,3 +1120,255 @@ func TestDs_setConnectorTypes(t *testing.T) { assert.True(t, mockConnector.Called) } + +func TestDs_ListStreams(t *testing.T) { + tests := map[string]struct { + request ListStreamsRequest + responseStatus int + responseBody string + expectedPath string + expectedResponse []StreamDetails + withError func(*testing.T, error) + }{ + "200 OK": { + request: ListStreamsRequest{}, + responseStatus: http.StatusOK, + responseBody: ` +[ + { + "streamId": 1, + "streamName": "Stream1", + "streamVersionId": 2, + "createdBy": "user1", + "createdDate": "14-07-2020 07:07:40 GMT", + "currentVersionId": 2, + "archived": false, + "activationStatus": "DEACTIVATED", + "groupId": 1234, + "groupName": "Default Group", + "contractId": "1-ABCDE", + "connectors": "S3-S1", + "streamTypeName": "Logs - Raw", + "properties": [ + { + "propertyId": 13371337, + "propertyName": "property_name_1" + } + ], + "errors": [ + { + "type": "ACTIVATION_ERROR", + "title": "Activation/Deactivation Error", + "detail": "Contact technical support." + } + ] + }, + { + "streamId": 2, + "streamName": "Stream2", + "streamVersionId": 3, + "createdBy": "user2", + "createdDate": "24-07-2020 07:07:40 GMT", + "currentVersionId": 3, + "archived": true, + "activationStatus": "ACTIVATED", + "groupId": 4321, + "groupName": "Default Group", + "contractId": "2-ABCDE", + "connectors": "S3-S2", + "streamTypeName": "Logs - Raw", + "properties": [ + { + "propertyId": 23372337, + "propertyName": "property_name_2" + }, + { + "propertyId": 33373337, + "propertyName": "property_name_3" + } + ] + } +] +`, + expectedPath: "/datastream-config-api/v1/log/streams", + expectedResponse: []StreamDetails{ + { + ActivationStatus: ActivationStatusDeactivated, + Archived: false, + Connectors: "S3-S1", + ContractID: "1-ABCDE", + CreatedBy: "user1", + CreatedDate: "14-07-2020 07:07:40 GMT", + CurrentVersionID: 2, + Errors: []Errors{ + { + Detail: "Contact technical support.", + Title: "Activation/Deactivation Error", + Type: "ACTIVATION_ERROR", + }, + }, + GroupID: 1234, + GroupName: "Default Group", + Properties: []Property{ + { + PropertyID: 13371337, + PropertyName: "property_name_1", + }, + }, + StreamID: 1, + StreamName: "Stream1", + StreamTypeName: "Logs - Raw", + StreamVersionID: 2, + }, + { + ActivationStatus: ActivationStatusActivated, + Archived: true, + Connectors: "S3-S2", + ContractID: "2-ABCDE", + CreatedBy: "user2", + CreatedDate: "24-07-2020 07:07:40 GMT", + CurrentVersionID: 3, + Errors: nil, + GroupID: 4321, + GroupName: "Default Group", + Properties: []Property{ + { + PropertyID: 23372337, + PropertyName: "property_name_2", + }, + { + PropertyID: 33373337, + PropertyName: "property_name_3", + }, + }, + StreamID: 2, + StreamName: "Stream2", + StreamTypeName: "Logs - Raw", + StreamVersionID: 3, + }, + }, + }, + "200 OK - with groupId": { + request: ListStreamsRequest{ + GroupID: tools.IntPtr(1234), + }, + responseStatus: http.StatusOK, + responseBody: ` +[ + { + "streamId": 2, + "streamName": "Stream2", + "streamVersionId": 3, + "createdBy": "user2", + "createdDate": "24-07-2020 07:07:40 GMT", + "currentVersionId": 3, + "archived": true, + "activationStatus": "ACTIVATED", + "groupId": 1234, + "groupName": "Default Group", + "contractId": "2-ABCDE", + "connectors": "S3-S2", + "streamTypeName": "Logs - Raw", + "properties": [ + { + "propertyId": 23372337, + "propertyName": "property_name_2" + }, + { + "propertyId": 33373337, + "propertyName": "property_name_3" + } + ] + } +] +`, + expectedPath: "/datastream-config-api/v1/log/streams?groupId=1234", + expectedResponse: []StreamDetails{ + { + ActivationStatus: ActivationStatusActivated, + Archived: true, + Connectors: "S3-S2", + ContractID: "2-ABCDE", + CreatedBy: "user2", + CreatedDate: "24-07-2020 07:07:40 GMT", + CurrentVersionID: 3, + Errors: nil, + GroupID: 1234, + GroupName: "Default Group", + Properties: []Property{ + { + PropertyID: 23372337, + PropertyName: "property_name_2", + }, + { + PropertyID: 33373337, + PropertyName: "property_name_3", + }, + }, + StreamID: 2, + StreamName: "Stream2", + StreamTypeName: "Logs - Raw", + StreamVersionID: 3, + }, + }, + }, + "400 bad request": { + request: ListStreamsRequest{}, + responseStatus: http.StatusBadRequest, + expectedPath: "/datastream-config-api/v1/log/streams", + responseBody: ` +{ + "type": "bad-request", + "title": "Bad Request", + "detail": "bad request", + "instance": "82b67b97-d98d-4bee-ac1e-ef6eaf7cac82", + "statusCode": 400, + "errors": [ + { + "type": "bad-request", + "title": "Bad Request", + "detail": "Stream does not exist. Please provide valid stream." + } + ] +} +`, + withError: func(t *testing.T, err error) { + want := &Error{ + Type: "bad-request", + Title: "Bad Request", + Detail: "bad request", + Instance: "82b67b97-d98d-4bee-ac1e-ef6eaf7cac82", + StatusCode: http.StatusBadRequest, + Errors: []RequestErrors{ + { + Type: "bad-request", + Title: "Bad Request", + Detail: "Stream does not exist. Please provide valid stream.", + }, + }, + } + assert.True(t, errors.Is(err, want), "want: %s; got: %s", want, err) + }, + }, + } + + for name, test := range tests { + t.Run(name, func(t *testing.T) { + mockServer := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + assert.Equal(t, test.expectedPath, r.URL.String()) + assert.Equal(t, http.MethodGet, r.Method) + w.WriteHeader(test.responseStatus) + _, err := w.Write([]byte(test.responseBody)) + assert.NoError(t, err) + })) + client := mockAPIClient(t, mockServer) + result, err := client.ListStreams(context.Background(), test.request) + if test.withError != nil { + test.withError(t, err) + return + } + require.NoError(t, err) + assert.Equal(t, test.expectedResponse, result) + }) + } +} From a4c640e9c239a7c5fc70dc905be5c319fc2ded91 Mon Sep 17 00:00:00 2001 From: Albert Gierlach Date: Tue, 11 Oct 2022 07:55:16 +0000 Subject: [PATCH 07/12] Pull request #466: DD-11179 update changelog Merge in DEVEXP/akamaiopen-edgegrid-golang from feature/DD-11179-update-changelog to feature/DD-11179-add-support-for-new-DS-functionalities --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 29bd299b..3c769c32 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # EDGEGRID GOLANG RELEASE NOTES +## xxxx (xxx, 2022) + +#### FEATURES/ENHANCEMENTS: + +* Datastream + * Add ListStreams + * Add new connectors: Elasticsearch, NewRelic and Loggly + * Extend Splunk and Custom HTTPS connectors mTLS certificates configuration + * Extend SumoLogic, Splunk and Custom HTTPS connectors with ability to specify custom HTTP headers + ## 2.16.0 (September 26, 2022) #### FEATURES/ENHANCEMENTS: From 76ea89d8545513b9099fcfc40eda1249a5a92ef4 Mon Sep 17 00:00:00 2001 From: agierlac Date: Tue, 11 Oct 2022 13:58:00 +0200 Subject: [PATCH 08/12] DD-11197 apply review suggestions --- pkg/datastream/stream.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/datastream/stream.go b/pkg/datastream/stream.go index c838269c..53ad37ef 100644 --- a/pkg/datastream/stream.go +++ b/pkg/datastream/stream.go @@ -221,7 +221,7 @@ type ( GroupID *int } - // StreamDetails list is returned from ListStreams method + // StreamDetails contains information about stream StreamDetails struct { ActivationStatus ActivationStatus `json:"activationStatus"` Archived bool `json:"archived"` From e3de275373079a5c4aaae2893ea9e715a1a0897b Mon Sep 17 00:00:00 2001 From: Michal Wojcik Date: Thu, 20 Oct 2022 06:46:54 +0000 Subject: [PATCH 09/12] DXE-1719 Release AkamaiOpen Edgegrid Golang 2.17 Merge in DEVEXP/akamaiopen-edgegrid-golang from feature/release_notes to v2 --- CHANGELOG.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c769c32..8ae0daff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # EDGEGRID GOLANG RELEASE NOTES -## xxxx (xxx, 2022) +## 2.17.0 (October 24, 2022) #### FEATURES/ENHANCEMENTS: @@ -10,6 +10,11 @@ * Extend Splunk and Custom HTTPS connectors mTLS certificates configuration * Extend SumoLogic, Splunk and Custom HTTPS connectors with ability to specify custom HTTP headers +#### BUG FIXES: + +* APPSEC + * Fix incorrect JSON sent when applying appsec_ip_geo resource in allow mode + ## 2.16.0 (September 26, 2022) #### FEATURES/ENHANCEMENTS: From ee5b837968b931a9913a734f73569b94cdf34937 Mon Sep 17 00:00:00 2001 From: James Lodine Date: Fri, 7 Oct 2022 07:15:20 +0000 Subject: [PATCH 10/12] SECKSD-16552 Address reviewer comments from EdgeGrid PR #452 Merge in DEVEXP/akamaiopen-edgegrid-golang from feature/SECKSD-16552 to feature/sp-security-v2-october-2022 --- pkg/appsec/activations.go | 23 +++++------ .../advanced_settings_evasive_path_match.go | 22 +++++----- pkg/appsec/advanced_settings_logging.go | 14 +++---- pkg/appsec/advanced_settings_pragma_header.go | 9 ++--- pkg/appsec/advanced_settings_prefetch.go | 8 ++-- pkg/appsec/api_constraints_protection.go | 8 ++-- pkg/appsec/api_endpoints.go | 14 +++---- pkg/appsec/api_hostname_coverage.go | 8 +--- .../api_hostname_coverage_match_targets.go | 7 +--- .../api_hostname_coverage_overlapping.go | 7 +--- pkg/appsec/api_request_constraints.go | 22 ++++------ pkg/appsec/attack_group.go | 31 ++++++-------- pkg/appsec/bypass_network_lists.go | 19 ++++----- pkg/appsec/configuration.go | 16 +++----- pkg/appsec/configuration_clone.go | 12 ++---- pkg/appsec/configuration_version.go | 7 +--- pkg/appsec/configuration_version_clone.go | 17 +++----- pkg/appsec/contracts_groups.go | 13 +++--- pkg/appsec/custom_deny.go | 34 +++++----------- pkg/appsec/custom_rule.go | 33 +++++---------- pkg/appsec/custom_rule_action.go | 18 ++++----- pkg/appsec/eval.go | 22 ++++------ pkg/appsec/eval_group.go | 31 ++++++-------- pkg/appsec/eval_host.go | 20 +++------- pkg/appsec/eval_penalty_box.go | 7 +--- pkg/appsec/eval_protect_host.go | 17 +++----- pkg/appsec/eval_rule.go | 24 ++++------- pkg/appsec/export_configuration.go | 26 +++++------- pkg/appsec/failover_hostnames.go | 7 +--- pkg/appsec/ip_geo.go | 10 ++--- pkg/appsec/ip_geo_protection.go | 17 +++----- pkg/appsec/malware_content_types.go | 7 +--- pkg/appsec/malware_policy.go | 23 ++++------- pkg/appsec/malware_policy_action.go | 20 ++++------ pkg/appsec/malware_protection.go | 17 +++----- pkg/appsec/match_target.go | 32 +++++---------- pkg/appsec/match_target_sequence.go | 10 ++--- pkg/appsec/network_layer_protection.go | 20 +++------- pkg/appsec/penalty_box.go | 16 +++----- pkg/appsec/rate_policy.go | 35 +++++----------- pkg/appsec/rate_policy_action.go | 27 +++++-------- pkg/appsec/rate_protection.go | 17 +++----- pkg/appsec/reputation_analysis.go | 16 +++----- pkg/appsec/reputation_profile.go | 37 ++++++----------- pkg/appsec/reputation_profile_action.go | 25 ++++-------- pkg/appsec/reputation_protection.go | 20 +++------- pkg/appsec/rule.go | 28 +++++-------- pkg/appsec/rule_upgrade.go | 10 ++--- pkg/appsec/security_policy.go | 40 ++++++------------- pkg/appsec/security_policy_clone.go | 19 +++------ pkg/appsec/security_policy_protections.go | 13 ++---- pkg/appsec/selectable_hostnames.go | 7 +--- pkg/appsec/selected_hostname.go | 20 +++------- pkg/appsec/siem_definitions.go | 15 +++---- pkg/appsec/siem_settings.go | 13 ++---- pkg/appsec/slow_post_protection_setting.go | 17 +++----- pkg/appsec/slowpost_protection.go | 17 +++----- pkg/appsec/threat_intel.go | 14 +++---- pkg/appsec/tuning_recommendations.go | 22 +++------- pkg/appsec/version_notes.go | 10 ++--- pkg/appsec/waf_mode.go | 17 +++----- pkg/appsec/waf_protection.go | 17 +++----- pkg/appsec/wap_bypass_network_lists.go | 19 ++++----- pkg/appsec/wap_selected_hostnames.go | 9 ++--- 64 files changed, 380 insertions(+), 772 deletions(-) diff --git a/pkg/appsec/activations.go b/pkg/appsec/activations.go index 51383370..fb3dc112 100644 --- a/pkg/appsec/activations.go +++ b/pkg/appsec/activations.go @@ -168,8 +168,6 @@ func (p *appsec) GetActivations(ctx context.Context, params GetActivationsReques return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetActivationsResponse - uri := fmt.Sprintf( "/appsec/v1/activations/%d", params.ActivationID) @@ -179,9 +177,10 @@ func (p *appsec) GetActivations(ctx context.Context, params GetActivationsReques return nil, fmt.Errorf("failed to create GetActivations request: %w", err) } + var result GetActivationsResponse resp, errp := p.Exec(req, &result) if errp != nil { - return nil, fmt.Errorf("GetActivations request failed: %w", errp) + return nil, fmt.Errorf("get activations request failed: %w", errp) } if resp.StatusCode != http.StatusOK { @@ -199,8 +198,6 @@ func (p *appsec) GetActivationHistory(ctx context.Context, params GetActivationH return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetActivationHistoryResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/activations", params.ConfigID) @@ -210,9 +207,10 @@ func (p *appsec) GetActivationHistory(ctx context.Context, params GetActivationH return nil, fmt.Errorf("failed to create GetActivationHistory request: %w", err) } - resp, errp := p.Exec(req, &result) - if errp != nil { - return nil, fmt.Errorf("list activation history request failed: %w", errp) + var result GetActivationHistoryResponse + resp, err := p.Exec(req, &result) + if err != nil { + return nil, fmt.Errorf("get activation history request failed: %w", err) } if resp.StatusCode != http.StatusOK { @@ -234,10 +232,9 @@ func (p *appsec) CreateActivations(ctx context.Context, params CreateActivations } var result CreateActivationsResponse - resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("CreateActivations request failed: %w", err) + return nil, fmt.Errorf("create activations request failed: %w", err) } if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) @@ -255,14 +252,13 @@ func (p *appsec) CreateActivations(ctx context.Context, params CreateActivations resp, err = p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetActivation request failed: %w", err) + return nil, fmt.Errorf("get activation request failed: %w", err) } if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) RemoveActivations(ctx context.Context, params RemoveActivationsRequest) (*RemoveActivationsResponse, error) { @@ -277,10 +273,9 @@ func (p *appsec) RemoveActivations(ctx context.Context, params RemoveActivations } var result RemoveActivationsResponse - resp, errp := p.Exec(req, &result, params) if errp != nil { - return nil, fmt.Errorf("RemoveActivations request failed: %w", errp) + return nil, fmt.Errorf("remove activations request failed: %w", errp) } if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) diff --git a/pkg/appsec/advanced_settings_evasive_path_match.go b/pkg/appsec/advanced_settings_evasive_path_match.go index 2059decc..544e07b1 100644 --- a/pkg/appsec/advanced_settings_evasive_path_match.go +++ b/pkg/appsec/advanced_settings_evasive_path_match.go @@ -90,15 +90,13 @@ func (v RemoveAdvancedSettingsEvasivePathMatchRequest) Validate() error { func (p *appsec) GetAdvancedSettingsEvasivePathMatch(ctx context.Context, params GetAdvancedSettingsEvasivePathMatchRequest) (*GetAdvancedSettingsEvasivePathMatchResponse, error) { logger := p.Log(ctx) - logger.Debug("GetAdvancedSettingsLoggings") + logger.Debug("GetAdvancedSettingsEvasivePathMatch") if err := params.Validate(); err != nil { return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetAdvancedSettingsEvasivePathMatchResponse var uri string - if params.PolicyID != "" { uri = fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/advanced-settings/evasive-path-match", @@ -114,12 +112,13 @@ func (p *appsec) GetAdvancedSettingsEvasivePathMatch(ctx context.Context, params req, err := http.NewRequestWithContext(ctx, http.MethodGet, uri, nil) if err != nil { - return nil, fmt.Errorf("failed to create getadvancedsettingsloggings request: %w", err) + return nil, fmt.Errorf("failed to create GetAdvancedSettingsEvasivePathMatch request: %w", err) } + var result GetAdvancedSettingsEvasivePathMatchResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("getadvancedsettingsloggings request failed: %w", err) + return nil, fmt.Errorf("get advanced settings evasive path match request failed: %w", err) } if resp.StatusCode != http.StatusOK { @@ -131,7 +130,7 @@ func (p *appsec) GetAdvancedSettingsEvasivePathMatch(ctx context.Context, params func (p *appsec) UpdateAdvancedSettingsEvasivePathMatch(ctx context.Context, params UpdateAdvancedSettingsEvasivePathMatchRequest) (*UpdateAdvancedSettingsEvasivePathMatchResponse, error) { logger := p.Log(ctx) - logger.Debug("UpdateAdvancedSettingsLogging") + logger.Debug("UpdateAdvancedSettingsEvasivePathMatch") if err := params.Validate(); err != nil { return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) @@ -153,14 +152,14 @@ func (p *appsec) UpdateAdvancedSettingsEvasivePathMatch(ctx context.Context, par req, err := http.NewRequestWithContext(ctx, http.MethodPut, uri, nil) if err != nil { - return nil, fmt.Errorf("failed to create create AdvancedSettingsLoggingrequest: %w", err) + return nil, fmt.Errorf("failed to create UpdateAdvancedSettingsEvasivePathMatch request: %w", err) } - req.Header.Set("Content-Type", "application/json") + var result UpdateAdvancedSettingsEvasivePathMatchResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("create AdvancedSettingsLogging request failed: %w", err) + return nil, fmt.Errorf("update advanced settings evasive path match request failed: %w", err) } if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { @@ -171,6 +170,9 @@ func (p *appsec) UpdateAdvancedSettingsEvasivePathMatch(ctx context.Context, par } func (p *appsec) RemoveAdvancedSettingsEvasivePathMatch(ctx context.Context, params RemoveAdvancedSettingsEvasivePathMatchRequest) (*RemoveAdvancedSettingsEvasivePathMatchResponse, error) { + logger := p.Log(ctx) + logger.Debug("RemoveAdvancedSettingsEvasivePathMatch") + request := UpdateAdvancedSettingsEvasivePathMatchRequest{ ConfigID: params.ConfigID, Version: params.Version, @@ -179,7 +181,7 @@ func (p *appsec) RemoveAdvancedSettingsEvasivePathMatch(ctx context.Context, par } _, err := p.UpdateAdvancedSettingsEvasivePathMatch(ctx, request) if err != nil { - return nil, fmt.Errorf("UpdateAdvancedSettingsEvasivePathMatch request failed: %w", err) + return nil, fmt.Errorf("remove advanced settings evasive path match request failed: %w", err) } response := RemoveAdvancedSettingsEvasivePathMatchResponse{ ConfigID: params.ConfigID, diff --git a/pkg/appsec/advanced_settings_logging.go b/pkg/appsec/advanced_settings_logging.go index 3102469c..e3c101fd 100644 --- a/pkg/appsec/advanced_settings_logging.go +++ b/pkg/appsec/advanced_settings_logging.go @@ -152,9 +152,7 @@ func (p *appsec) GetAdvancedSettingsLogging(ctx context.Context, params GetAdvan return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetAdvancedSettingsLoggingResponse var uri string - if params.PolicyID != "" { uri = fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/advanced-settings/logging", @@ -173,9 +171,10 @@ func (p *appsec) GetAdvancedSettingsLogging(ctx context.Context, params GetAdvan return nil, fmt.Errorf("failed to create GetAdvancedSettingsLogging request: %w", err) } + var result GetAdvancedSettingsLoggingResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetAdvancedSettingsLogging request failed: %w", err) + return nil, fmt.Errorf("get advanced settings logging request failed: %w", err) } if resp.StatusCode != http.StatusOK { @@ -183,7 +182,6 @@ func (p *appsec) GetAdvancedSettingsLogging(ctx context.Context, params GetAdvan } return &result, nil - } func (p *appsec) UpdateAdvancedSettingsLogging(ctx context.Context, params UpdateAdvancedSettingsLoggingRequest) (*UpdateAdvancedSettingsLoggingResponse, error) { @@ -212,12 +210,12 @@ func (p *appsec) UpdateAdvancedSettingsLogging(ctx context.Context, params Updat if err != nil { return nil, fmt.Errorf("failed to create UpdateAdvancedSettingsLogging request: %w", err) } - req.Header.Set("Content-Type", "application/json") + var result UpdateAdvancedSettingsLoggingResponse resp, err := p.Exec(req, &result, params.JsonPayloadRaw) if err != nil { - return nil, fmt.Errorf("CreateAdvancedSettingsLogging request failed: %w", err) + return nil, fmt.Errorf("update advanced settings logging request failed: %w", err) } if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { @@ -253,12 +251,12 @@ func (p *appsec) RemoveAdvancedSettingsLogging(ctx context.Context, params Remov if err != nil { return nil, fmt.Errorf("failed to create RemoveAdvancedSettingsLogging request: %w", err) } - req.Header.Set("Content-Type", "application/json") + var result RemoveAdvancedSettingsLoggingResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("RemoveAdvancedSettingsLogging request failed: %w", err) + return nil, fmt.Errorf("remove advanced settings logging request failed: %w", err) } if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { diff --git a/pkg/appsec/advanced_settings_pragma_header.go b/pkg/appsec/advanced_settings_pragma_header.go index de18d6d7..1b9a81ec 100644 --- a/pkg/appsec/advanced_settings_pragma_header.go +++ b/pkg/appsec/advanced_settings_pragma_header.go @@ -89,9 +89,7 @@ func (p *appsec) GetAdvancedSettingsPragma(ctx context.Context, params GetAdvanc return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetAdvancedSettingsPragmaResponse var uri string - if params.PolicyID != "" { uri = fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/advanced-settings/pragma-header", @@ -109,12 +107,12 @@ func (p *appsec) GetAdvancedSettingsPragma(ctx context.Context, params GetAdvanc if err != nil { return nil, fmt.Errorf("failed to create GetAdvancedSettingsPragma request: %w", err) } - req.Header.Set("Content-Type", "application/json") + var result GetAdvancedSettingsPragmaResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetAdvancedSettingsPragma request failed: %w", err) + return nil, fmt.Errorf("get advanced settings pragma request failed: %w", err) } if resp.StatusCode != http.StatusOK { @@ -122,7 +120,6 @@ func (p *appsec) GetAdvancedSettingsPragma(ctx context.Context, params GetAdvanc } return &result, nil - } func (p *appsec) UpdateAdvancedSettingsPragma(ctx context.Context, params UpdateAdvancedSettingsPragmaRequest) (*UpdateAdvancedSettingsPragmaResponse, error) { @@ -155,7 +152,7 @@ func (p *appsec) UpdateAdvancedSettingsPragma(ctx context.Context, params Update var result UpdateAdvancedSettingsPragmaResponse resp, err := p.Exec(req, &result, params.JsonPayloadRaw) if err != nil { - return nil, fmt.Errorf("UpdateAdvancedSettingsPragma request failed: %w", err) + return nil, fmt.Errorf("update advanced settings pragma request failed: %w", err) } if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { diff --git a/pkg/appsec/advanced_settings_prefetch.go b/pkg/appsec/advanced_settings_prefetch.go index 5466a6ea..a0584d66 100644 --- a/pkg/appsec/advanced_settings_prefetch.go +++ b/pkg/appsec/advanced_settings_prefetch.go @@ -93,8 +93,6 @@ func (p *appsec) GetAdvancedSettingsPrefetch(ctx context.Context, params GetAdva return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetAdvancedSettingsPrefetchResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/advanced-settings/prefetch", params.ConfigID, @@ -106,9 +104,10 @@ func (p *appsec) GetAdvancedSettingsPrefetch(ctx context.Context, params GetAdva return nil, fmt.Errorf("failed to create GetAdvancedSettingsPrefetch request: %w", err) } + var result GetAdvancedSettingsPrefetchResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetAdvancedSettingsPrefetch request failed: %w", err) + return nil, fmt.Errorf("get advanced settings prefetch request failed: %w", err) } if resp.StatusCode != http.StatusOK { @@ -116,7 +115,6 @@ func (p *appsec) GetAdvancedSettingsPrefetch(ctx context.Context, params GetAdva } return &result, nil - } func (p *appsec) UpdateAdvancedSettingsPrefetch(ctx context.Context, params UpdateAdvancedSettingsPrefetchRequest) (*UpdateAdvancedSettingsPrefetchResponse, error) { @@ -141,7 +139,7 @@ func (p *appsec) UpdateAdvancedSettingsPrefetch(ctx context.Context, params Upda var result UpdateAdvancedSettingsPrefetchResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateAdvancedSettingsPrefetch request failed: %w", err) + return nil, fmt.Errorf("update advanced settings prefetch request failed: %w", err) } if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { diff --git a/pkg/appsec/api_constraints_protection.go b/pkg/appsec/api_constraints_protection.go index 5b30a3d8..f7dcac11 100644 --- a/pkg/appsec/api_constraints_protection.go +++ b/pkg/appsec/api_constraints_protection.go @@ -85,8 +85,6 @@ func (p *appsec) GetAPIConstraintsProtection(ctx context.Context, params GetAPIC return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetAPIConstraintsProtectionResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/protections", params.ConfigID, @@ -98,9 +96,10 @@ func (p *appsec) GetAPIConstraintsProtection(ctx context.Context, params GetAPIC return nil, fmt.Errorf("failed to create GetAPIConstraintsProtection request: %w", err) } + var result GetAPIConstraintsProtectionResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetAPIConstraintsProtection request failed: %w", err) + return nil, fmt.Errorf("get API constraints protection request failed: %w", err) } if resp.StatusCode != http.StatusOK { @@ -108,7 +107,6 @@ func (p *appsec) GetAPIConstraintsProtection(ctx context.Context, params GetAPIC } return &result, nil - } func (p *appsec) UpdateAPIConstraintsProtection(ctx context.Context, params UpdateAPIConstraintsProtectionRequest) (*UpdateAPIConstraintsProtectionResponse, error) { @@ -134,7 +132,7 @@ func (p *appsec) UpdateAPIConstraintsProtection(ctx context.Context, params Upda var result UpdateAPIConstraintsProtectionResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateAPIConstraintsProtection request failed: %w", err) + return nil, fmt.Errorf("update API constraints protection request failed: %w", err) } if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { diff --git a/pkg/appsec/api_endpoints.go b/pkg/appsec/api_endpoints.go index f41fc198..44937233 100644 --- a/pkg/appsec/api_endpoints.go +++ b/pkg/appsec/api_endpoints.go @@ -62,9 +62,6 @@ func (p *appsec) GetApiEndpoints(ctx context.Context, params GetApiEndpointsRequ return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetApiEndpointsResponse - var filteredResult GetApiEndpointsResponse - var uri string if params.PolicyID != "" { uri = fmt.Sprintf( @@ -85,25 +82,24 @@ func (p *appsec) GetApiEndpoints(ctx context.Context, params GetApiEndpointsRequ return nil, fmt.Errorf("failed to create GetApiEndpoints request: %w", err) } + var result GetApiEndpointsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetApiEndpoints request failed: %w", err) + return nil, fmt.Errorf("get API endpoints request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } if params.Name != "" { + var filteredResult GetApiEndpointsResponse for _, val := range result.APIEndpoints { if val.Name == params.Name { filteredResult.APIEndpoints = append(filteredResult.APIEndpoints, val) } } - - } else { - filteredResult = result + return &filteredResult, nil } - return &filteredResult, nil + return &result, nil } diff --git a/pkg/appsec/api_hostname_coverage.go b/pkg/appsec/api_hostname_coverage.go index 816b01f6..47d7910d 100644 --- a/pkg/appsec/api_hostname_coverage.go +++ b/pkg/appsec/api_hostname_coverage.go @@ -46,24 +46,20 @@ func (p *appsec) GetApiHostnameCoverage(ctx context.Context, _ GetApiHostnameCov logger := p.Log(ctx) logger.Debug("GetApiHostnameCoverage") - var result GetApiHostnameCoverageResponse - uri := "/appsec/v1/hostname-coverage" - req, err := http.NewRequestWithContext(ctx, http.MethodGet, uri, nil) if err != nil { return nil, fmt.Errorf("failed to create GetApiHostnameCoverage request: %w", err) } + var result GetApiHostnameCoverageResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetApiHostnameCoverage request failed: %w", err) + return nil, fmt.Errorf("get API hostname coverage request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } diff --git a/pkg/appsec/api_hostname_coverage_match_targets.go b/pkg/appsec/api_hostname_coverage_match_targets.go index 415c6dfe..cd373424 100644 --- a/pkg/appsec/api_hostname_coverage_match_targets.go +++ b/pkg/appsec/api_hostname_coverage_match_targets.go @@ -82,8 +82,6 @@ func (p *appsec) GetApiHostnameCoverageMatchTargets(ctx context.Context, params return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetApiHostnameCoverageMatchTargetsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/hostname-coverage/match-targets?hostname=%s", params.ConfigID, @@ -95,15 +93,14 @@ func (p *appsec) GetApiHostnameCoverageMatchTargets(ctx context.Context, params return nil, fmt.Errorf("failed to create GetApiHostnameCoverageMatchTargets request: %w", err) } + var result GetApiHostnameCoverageMatchTargetsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetApiHostnameCoverageMatchTargets request failed: %w", err) + return nil, fmt.Errorf("get API hostname coverage match targets request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } diff --git a/pkg/appsec/api_hostname_coverage_overlapping.go b/pkg/appsec/api_hostname_coverage_overlapping.go index ddad7c20..19b52a57 100644 --- a/pkg/appsec/api_hostname_coverage_overlapping.go +++ b/pkg/appsec/api_hostname_coverage_overlapping.go @@ -54,8 +54,6 @@ func (p *appsec) GetApiHostnameCoverageOverlapping(ctx context.Context, params G return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetApiHostnameCoverageOverlappingResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/hostname-coverage/overlapping?hostname=%s", params.ConfigID, @@ -68,15 +66,14 @@ func (p *appsec) GetApiHostnameCoverageOverlapping(ctx context.Context, params G return nil, fmt.Errorf("failed to create GetApiHostnameCoverageOverlapping request: %w", err) } + var result GetApiHostnameCoverageOverlappingResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetApiHostnameCoverageOverlapping request failed: %w", err) + return nil, fmt.Errorf("get API hostname coverage overlapping request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } diff --git a/pkg/appsec/api_request_constraints.go b/pkg/appsec/api_request_constraints.go index c84b51d9..e8f70716 100644 --- a/pkg/appsec/api_request_constraints.go +++ b/pkg/appsec/api_request_constraints.go @@ -110,9 +110,6 @@ func (p *appsec) GetApiRequestConstraints(ctx context.Context, params GetApiRequ return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetApiRequestConstraintsResponse - var filteredResult GetApiRequestConstraintsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/api-request-constraints", params.ConfigID, @@ -124,31 +121,26 @@ func (p *appsec) GetApiRequestConstraints(ctx context.Context, params GetApiRequ return nil, fmt.Errorf("failed to create GetApiRequestConstraints request: %w", err) } + var result GetApiRequestConstraintsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetApiRequestConstraints request failed: %w", err) + return nil, fmt.Errorf("get API request constraints request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } if params.ApiID != 0 { - filteredResult.APIEndpoints = make([]ApiEndpoint, 0) + var filteredResult GetApiRequestConstraintsResponse for _, val := range result.APIEndpoints { if val.ID == params.ApiID { filteredResult.APIEndpoints = append(filteredResult.APIEndpoints, val) } } - } else { - filteredResult = result - if len(filteredResult.APIEndpoints) == 0 { - filteredResult.APIEndpoints = make([]ApiEndpoint, 0) - } + return &filteredResult, nil } - return &filteredResult, nil - + return &result, nil } func (p *appsec) UpdateApiRequestConstraints(ctx context.Context, params UpdateApiRequestConstraintsRequest) (*UpdateApiRequestConstraintsResponse, error) { @@ -185,7 +177,7 @@ func (p *appsec) UpdateApiRequestConstraints(ctx context.Context, params UpdateA var result UpdateApiRequestConstraintsResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateApiRequestConstraints request failed: %w", err) + return nil, fmt.Errorf("update API request constraints request failed: %w", err) } if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { @@ -229,7 +221,7 @@ func (p *appsec) RemoveApiRequestConstraints(ctx context.Context, params RemoveA var result RemoveApiRequestConstraintsResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("RemoveApiRequestConstraints request failed: %w", err) + return nil, fmt.Errorf("remove API request constraints request failed: %w", err) } if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { diff --git a/pkg/appsec/attack_group.go b/pkg/appsec/attack_group.go index 90c6f9e0..565021c9 100644 --- a/pkg/appsec/attack_group.go +++ b/pkg/appsec/attack_group.go @@ -199,8 +199,6 @@ func (p *appsec) GetAttackGroup(ctx context.Context, params GetAttackGroupReques return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetAttackGroupResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/attack-groups/%s?includeConditionException=true", params.ConfigID, @@ -212,31 +210,27 @@ func (p *appsec) GetAttackGroup(ctx context.Context, params GetAttackGroupReques if err != nil { return nil, fmt.Errorf("failed to create GetAttackGroup request: %w", err) } - logger.Debugf("BEFORE GetAttackGroup %v", result) + + var result GetAttackGroupResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetAttackGroup request failed: %w", err) + return nil, fmt.Errorf("get attack group request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } - logger.Debugf("GetAttackGroup %v", result) - return &result, nil + return &result, nil } func (p *appsec) GetAttackGroups(ctx context.Context, params GetAttackGroupsRequest) (*GetAttackGroupsResponse, error) { logger := p.Log(ctx) - logger.Debug("GetAttackGroupConditionExceptions") + logger.Debug("GetAttackGroups") if err := params.Validate(); err != nil { return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetAttackGroupsResponse - var filteredResult GetAttackGroupsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/attack-groups?includeConditionException=true", params.ConfigID, @@ -247,28 +241,27 @@ func (p *appsec) GetAttackGroups(ctx context.Context, params GetAttackGroupsRequ if err != nil { return nil, fmt.Errorf("failed to create GetAttackGroups request: %w", err) } - logger.Debugf("BEFORE GetAttackGroupConditionException %v", result) + + var result GetAttackGroupsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetAttackGroups request failed: %w", err) + return nil, fmt.Errorf("get attack groups request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } if params.Group != "" { + var filteredResult GetAttackGroupsResponse for k, val := range result.AttackGroups { if val.Group == params.Group { filteredResult.AttackGroups = append(filteredResult.AttackGroups, result.AttackGroups[k]) } } - } else { - filteredResult = result + return &filteredResult, nil } - return &filteredResult, nil - + return &result, nil } func (p *appsec) UpdateAttackGroup(ctx context.Context, params UpdateAttackGroupRequest) (*UpdateAttackGroupResponse, error) { @@ -296,7 +289,7 @@ func (p *appsec) UpdateAttackGroup(ctx context.Context, params UpdateAttackGroup req.Header.Set("Content-Type", "application/json") resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateAttackGroup request failed: %w", err) + return nil, fmt.Errorf("update attack group request failed: %w", err) } if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { diff --git a/pkg/appsec/bypass_network_lists.go b/pkg/appsec/bypass_network_lists.go index a7a59752..5140f2b1 100644 --- a/pkg/appsec/bypass_network_lists.go +++ b/pkg/appsec/bypass_network_lists.go @@ -112,14 +112,12 @@ func (v RemoveBypassNetworkListsRequest) Validate() error { func (p *appsec) GetBypassNetworkLists(ctx context.Context, params GetBypassNetworkListsRequest) (*GetBypassNetworkListsResponse, error) { logger := p.Log(ctx) - logger.Debugf("GetBypassNetworkLists(%+v)", params) + logger.Debugf("GetBypassNetworkLists") if err := params.Validate(); err != nil { return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetBypassNetworkListsResponse - var uri string if params.PolicyID == "" { uri = fmt.Sprintf( @@ -141,22 +139,21 @@ func (p *appsec) GetBypassNetworkLists(ctx context.Context, params GetBypassNetw return nil, fmt.Errorf("failed to create GetBypassNetworkLists request: %w", err) } + var result GetBypassNetworkListsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetBypassNetworkLists request failed: %w", err) + return nil, fmt.Errorf("get bypass network lists request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) UpdateBypassNetworkLists(ctx context.Context, params UpdateBypassNetworkListsRequest) (*UpdateBypassNetworkListsResponse, error) { logger := p.Log(ctx) - logger.Debugf("UpdateBypassNetworkLists(%+v)", params) + logger.Debugf("UpdateBypassNetworkLists") if err := params.Validate(); err != nil { return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) @@ -186,9 +183,8 @@ func (p *appsec) UpdateBypassNetworkLists(ctx context.Context, params UpdateBypa var result UpdateBypassNetworkListsResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateBypassNetworkLists request failed: %w", err) + return nil, fmt.Errorf("update bypass network lists request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } @@ -199,7 +195,7 @@ func (p *appsec) UpdateBypassNetworkLists(ctx context.Context, params UpdateBypa // Deprecated: this method will be removed in a future release. func (p *appsec) RemoveBypassNetworkLists(ctx context.Context, params RemoveBypassNetworkListsRequest) (*RemoveBypassNetworkListsResponse, error) { logger := p.Log(ctx) - logger.Debugf("RemoveBypassNetworkLists(%+v)", params) + logger.Debugf("RemoveBypassNetworkLists") if err := params.Validate(); err != nil { return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) @@ -229,9 +225,8 @@ func (p *appsec) RemoveBypassNetworkLists(ctx context.Context, params RemoveBypa var result RemoveBypassNetworkListsResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("RemoveBypassNetworkLists request failed: %w", err) + return nil, fmt.Errorf("remove bypass network lists request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/configuration.go b/pkg/appsec/configuration.go index cb9e02e9..14e3ed98 100644 --- a/pkg/appsec/configuration.go +++ b/pkg/appsec/configuration.go @@ -155,7 +155,7 @@ func (p *appsec) GetConfiguration(ctx context.Context, params GetConfigurationRe resp, err := p.Exec(req, &getConfigurationResponse) if err != nil { - return nil, fmt.Errorf("GetConfiguration request failed: %w", err) + return nil, fmt.Errorf("get configuration request failed: %w", err) } if resp.StatusCode != http.StatusOK { @@ -181,7 +181,7 @@ func (p *appsec) GetConfigurations(ctx context.Context, _ GetConfigurationsReque resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetConfigurations request failed: %w", err) + return nil, fmt.Errorf("get configurations request failed: %w", err) } if resp.StatusCode != http.StatusOK { @@ -189,7 +189,6 @@ func (p *appsec) GetConfigurations(ctx context.Context, _ GetConfigurationsReque } return &result, nil - } func (p *appsec) UpdateConfiguration(ctx context.Context, params UpdateConfigurationRequest) (*UpdateConfigurationResponse, error) { @@ -213,7 +212,7 @@ func (p *appsec) UpdateConfiguration(ctx context.Context, params UpdateConfigura var result UpdateConfigurationResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateConfiguration request failed: %w", err) + return nil, fmt.Errorf("update configuration request failed: %w", err) } if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { @@ -236,10 +235,9 @@ func (p *appsec) CreateConfiguration(ctx context.Context, params CreateConfigura } var result CreateConfigurationResponse - resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("CreateConfiguration request failed: %w", err) + return nil, fmt.Errorf("create configuration request failed: %w", err) } if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { @@ -247,7 +245,6 @@ func (p *appsec) CreateConfiguration(ctx context.Context, params CreateConfigura } return &result, nil - } func (p *appsec) RemoveConfiguration(ctx context.Context, params RemoveConfigurationRequest) (*RemoveConfigurationResponse, error) { @@ -258,17 +255,16 @@ func (p *appsec) RemoveConfiguration(ctx context.Context, params RemoveConfigura return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result RemoveConfigurationResponse - uri := fmt.Sprintf("/appsec/v1/configs/%d", params.ConfigID) req, err := http.NewRequestWithContext(ctx, http.MethodDelete, uri, nil) if err != nil { return nil, fmt.Errorf("failed to create RemoveConfiguration request: %w", err) } + var result RemoveConfigurationResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("RemoveConfiguration request failed: %w", err) + return nil, fmt.Errorf("remove configuration request failed: %w", err) } if resp.StatusCode != http.StatusNoContent && resp.StatusCode != http.StatusOK { diff --git a/pkg/appsec/configuration_clone.go b/pkg/appsec/configuration_clone.go index 7074cfd8..6f8aa5c4 100644 --- a/pkg/appsec/configuration_clone.go +++ b/pkg/appsec/configuration_clone.go @@ -102,8 +102,6 @@ func (p *appsec) GetConfigurationClone(ctx context.Context, params GetConfigurat return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetConfigurationCloneResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d", params.ConfigID, @@ -114,17 +112,16 @@ func (p *appsec) GetConfigurationClone(ctx context.Context, params GetConfigurat return nil, fmt.Errorf("failed to create GetConfigurationClone request: %w", err) } + var result GetConfigurationCloneResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetConfigurationClone request failed: %w", err) + return nil, fmt.Errorf("get configuration clone request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) CreateConfigurationClone(ctx context.Context, params CreateConfigurationCloneRequest) (*CreateConfigurationCloneResponse, error) { @@ -143,16 +140,13 @@ func (p *appsec) CreateConfigurationClone(ctx context.Context, params CreateConf } var result CreateConfigurationCloneResponse - resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("CreateConfigurationClone request failed: %w", err) + return nil, fmt.Errorf("create configuration clone request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } return &result, nil - } diff --git a/pkg/appsec/configuration_version.go b/pkg/appsec/configuration_version.go index 4d46f972..8a3e4b17 100644 --- a/pkg/appsec/configuration_version.go +++ b/pkg/appsec/configuration_version.go @@ -47,8 +47,6 @@ func (p *appsec) GetConfigurationVersions(ctx context.Context, params GetConfigu logger := p.Log(ctx) logger.Debug("GetConfigurationVersions") - var result GetConfigurationVersionsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions?page=-1&detail=false", params.ConfigID) @@ -58,15 +56,14 @@ func (p *appsec) GetConfigurationVersions(ctx context.Context, params GetConfigu return nil, fmt.Errorf("failed to create GetConfigurationVersions request: %w", err) } + var result GetConfigurationVersionsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetConfigurationVersions request failed: %w", err) + return nil, fmt.Errorf("get configuration cersions request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } diff --git a/pkg/appsec/configuration_version_clone.go b/pkg/appsec/configuration_version_clone.go index 9b05ea4a..ea966a03 100644 --- a/pkg/appsec/configuration_version_clone.go +++ b/pkg/appsec/configuration_version_clone.go @@ -131,8 +131,6 @@ func (p *appsec) GetConfigurationVersionClone(ctx context.Context, params GetCon return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetConfigurationVersionCloneResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d", params.ConfigID, @@ -143,17 +141,16 @@ func (p *appsec) GetConfigurationVersionClone(ctx context.Context, params GetCon return nil, fmt.Errorf("failed to create GetConfigurationVersionClone request: %w", err) } + var result GetConfigurationVersionCloneResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetConfigurationVersionClone request failed: %w", err) + return nil, fmt.Errorf("get configuration version clone request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) CreateConfigurationVersionClone(ctx context.Context, params CreateConfigurationVersionCloneRequest) (*CreateConfigurationVersionCloneResponse, error) { @@ -172,23 +169,20 @@ func (p *appsec) CreateConfigurationVersionClone(ctx context.Context, params Cre } var result CreateConfigurationVersionCloneResponse - resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("CreateConfigurationVersionClone request failed: %w", err) + return nil, fmt.Errorf("create configuration version clone request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) RemoveConfigurationVersionClone(ctx context.Context, params RemoveConfigurationVersionCloneRequest) (*RemoveConfigurationVersionCloneResponse, error) { logger := p.Log(ctx) - logger.Debug("RemoveConfiguration") + logger.Debug("RemoveConfigurationVersionClone") if err := params.Validate(); err != nil { return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) @@ -203,9 +197,8 @@ func (p *appsec) RemoveConfigurationVersionClone(ctx context.Context, params Rem var result RemoveConfigurationVersionCloneResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("RemoveConfigurationVersionClone request failed: %w", err) + return nil, fmt.Errorf("remove configuration version clone request failed: %w", err) } - if resp.StatusCode != http.StatusNoContent && resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } diff --git a/pkg/appsec/contracts_groups.go b/pkg/appsec/contracts_groups.go index da70eb69..045ddd67 100644 --- a/pkg/appsec/contracts_groups.go +++ b/pkg/appsec/contracts_groups.go @@ -40,9 +40,6 @@ func (p *appsec) GetContractsGroups(ctx context.Context, params GetContractsGrou logger := p.Log(ctx) logger.Debug("GetContractsGroups") - var result GetContractsGroupsResponse - var filteredResult GetContractsGroupsResponse - uri := "/appsec/v1/contracts-groups" @@ -51,24 +48,24 @@ func (p *appsec) GetContractsGroups(ctx context.Context, params GetContractsGrou return nil, fmt.Errorf("failed to create GetContractsGroups request: %w", err) } + var result GetContractsGroupsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetContractsGroups request failed: %w", err) + return nil, fmt.Errorf("get contracts groups request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } if params.GroupID != 0 { + var filteredResult GetContractsGroupsResponse for _, val := range result.ContractGroups { if val.ContractID == params.ContractID && val.GroupID == params.GroupID { filteredResult.ContractGroups = append(filteredResult.ContractGroups, val) } } - } else { - filteredResult = result + return &filteredResult, nil } - return &filteredResult, nil + return &result, nil } diff --git a/pkg/appsec/custom_deny.go b/pkg/appsec/custom_deny.go index 1a9edc02..52d9d950 100644 --- a/pkg/appsec/custom_deny.go +++ b/pkg/appsec/custom_deny.go @@ -198,8 +198,6 @@ func (p *appsec) GetCustomDeny(ctx context.Context, params GetCustomDenyRequest) return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetCustomDenyResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/custom-deny/%s", params.ConfigID, @@ -211,17 +209,16 @@ func (p *appsec) GetCustomDeny(ctx context.Context, params GetCustomDenyRequest) return nil, fmt.Errorf("failed to create GetCustomDeny request: %w", err) } + var result GetCustomDenyResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetCustomDeny request failed: %w", err) + return nil, fmt.Errorf("get custom deny request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) GetCustomDenyList(ctx context.Context, params GetCustomDenyListRequest) (*GetCustomDenyListResponse, error) { @@ -232,9 +229,6 @@ func (p *appsec) GetCustomDenyList(ctx context.Context, params GetCustomDenyList return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetCustomDenyListResponse - var filteredResult GetCustomDenyListResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/custom-deny", params.ConfigID, @@ -246,27 +240,26 @@ func (p *appsec) GetCustomDenyList(ctx context.Context, params GetCustomDenyList return nil, fmt.Errorf("failed to create GetlustomDenyList request: %w", err) } + var result GetCustomDenyListResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetCustomDenyList request failed: %w", err) + return nil, fmt.Errorf("get custom deny list request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } if params.ID != "" { + var filteredResult GetCustomDenyListResponse for _, val := range result.CustomDenyList { if string(val.ID) == params.ID { filteredResult.CustomDenyList = append(filteredResult.CustomDenyList, val) } } - - } else { - filteredResult = result + return &filteredResult, nil } - return &filteredResult, nil + return &result, nil } func (p *appsec) UpdateCustomDeny(ctx context.Context, params UpdateCustomDenyRequest) (*UpdateCustomDenyResponse, error) { @@ -293,9 +286,8 @@ func (p *appsec) UpdateCustomDeny(ctx context.Context, params UpdateCustomDenyRe req.Header.Set("Content-Type", "application/json") resp, err := p.Exec(req, &result, params.JsonPayloadRaw) if err != nil { - return nil, fmt.Errorf("UpdateCustomDeny request failed: %w", err) + return nil, fmt.Errorf("update custom deny request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } @@ -326,15 +318,13 @@ func (p *appsec) CreateCustomDeny(ctx context.Context, params CreateCustomDenyRe req.Header.Set("Content-Type", "application/json") resp, err := p.Exec(req, &result, params.JsonPayloadRaw) if err != nil { - return nil, fmt.Errorf("CreateCustomDeny request failed: %w", err) + return nil, fmt.Errorf("create custom deny request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) RemoveCustomDeny(ctx context.Context, params RemoveCustomDenyRequest) (*RemoveCustomDenyResponse, error) { @@ -345,19 +335,17 @@ func (p *appsec) RemoveCustomDeny(ctx context.Context, params RemoveCustomDenyRe return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result RemoveCustomDenyResponse - uri := fmt.Sprintf("/appsec/v1/configs/%d/versions/%d/custom-deny/%s", params.ConfigID, params.Version, params.ID) req, err := http.NewRequestWithContext(ctx, http.MethodDelete, uri, nil) if err != nil { return nil, fmt.Errorf("failed to create RemoveCustomDeny request: %w", err) } + var result RemoveCustomDenyResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("RemoveCustomDeny request failed: %w", err) + return nil, fmt.Errorf("remove custom deny request failed: %w", err) } - if resp.StatusCode != http.StatusNoContent && resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } diff --git a/pkg/appsec/custom_rule.go b/pkg/appsec/custom_rule.go index 2b2701b1..871515c5 100644 --- a/pkg/appsec/custom_rule.go +++ b/pkg/appsec/custom_rule.go @@ -263,8 +263,6 @@ func (p *appsec) GetCustomRule(ctx context.Context, params GetCustomRuleRequest) return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetCustomRuleResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/custom-rules/%d", params.ConfigID, @@ -275,17 +273,16 @@ func (p *appsec) GetCustomRule(ctx context.Context, params GetCustomRuleRequest) return nil, fmt.Errorf("failed to create GetCustomRule request: %w", err) } + var result GetCustomRuleResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetCustomRule request failed: %w", err) + return nil, fmt.Errorf("get custom rule request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) GetCustomRules(ctx context.Context, params GetCustomRulesRequest) (*GetCustomRulesResponse, error) { @@ -296,9 +293,6 @@ func (p *appsec) GetCustomRules(ctx context.Context, params GetCustomRulesReques return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetCustomRulesResponse - var filteredResult GetCustomRulesResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/custom-rules", params.ConfigID, @@ -309,28 +303,26 @@ func (p *appsec) GetCustomRules(ctx context.Context, params GetCustomRulesReques return nil, fmt.Errorf("failed to create GetCustomRules request: %w", err) } + var result GetCustomRulesResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetCustomRules request failed: %w", err) + return nil, fmt.Errorf("get custom rules request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } if params.ID != 0 { + var filteredResult GetCustomRulesResponse for _, val := range result.CustomRules { if val.ID == params.ID { filteredResult.CustomRules = append(filteredResult.CustomRules, val) } } - - } else { - filteredResult = result + return &filteredResult, nil } - return &filteredResult, nil - + return &result, nil } func (p *appsec) UpdateCustomRule(ctx context.Context, params UpdateCustomRuleRequest) (*UpdateCustomRuleResponse, error) { @@ -356,9 +348,8 @@ func (p *appsec) UpdateCustomRule(ctx context.Context, params UpdateCustomRuleRe req.Header.Set("Content-Type", "application/json") resp, err := p.Exec(req, &result, params.JsonPayloadRaw) if err != nil { - return nil, fmt.Errorf("UpdateCustomRule request failed: %w", err) + return nil, fmt.Errorf("update custom rule request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } @@ -388,15 +379,13 @@ func (p *appsec) CreateCustomRule(ctx context.Context, params CreateCustomRuleRe req.Header.Set("Content-Type", "application/json") resp, err := p.Exec(req, &result, params.JsonPayloadRaw) if err != nil { - return nil, fmt.Errorf("CreateCustomRule request failed: %w", err) + return nil, fmt.Errorf("create custom rule request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) RemoveCustomRule(ctx context.Context, params RemoveCustomRuleRequest) (*RemoveCustomRuleResponse, error) { @@ -408,7 +397,6 @@ func (p *appsec) RemoveCustomRule(ctx context.Context, params RemoveCustomRuleRe } var result RemoveCustomRuleResponse - uri := fmt.Sprintf("/appsec/v1/configs/%d/custom-rules/%d", params.ConfigID, params.ID) req, err := http.NewRequestWithContext(ctx, http.MethodDelete, uri, nil) if err != nil { @@ -417,9 +405,8 @@ func (p *appsec) RemoveCustomRule(ctx context.Context, params RemoveCustomRuleRe resp, err := p.Exec(req, nil) if err != nil { - return nil, fmt.Errorf("RemoveCustomRule request failed: %w", err) + return nil, fmt.Errorf("remove custom rule request failed: %w", err) } - logger.Debugf("RemoveCustomRule RESP CODE %v", resp.StatusCode) if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusNoContent { return nil, p.Error(resp) } diff --git a/pkg/appsec/custom_rule_action.go b/pkg/appsec/custom_rule_action.go index c43fb432..df4032f4 100644 --- a/pkg/appsec/custom_rule_action.go +++ b/pkg/appsec/custom_rule_action.go @@ -130,7 +130,7 @@ func (p *appsec) GetCustomRuleAction(ctx context.Context, params GetCustomRuleAc resp, err := p.Exec(req, &results) if err != nil { - return nil, fmt.Errorf("GetCustomRuleAction request failed: %w", err) + return nil, fmt.Errorf("get custom rule action request failed: %w", err) } if resp.StatusCode != http.StatusOK { @@ -145,7 +145,6 @@ func (p *appsec) GetCustomRuleAction(ctx context.Context, params GetCustomRuleAc } return &result, nil - } func (p *appsec) GetCustomRuleActions(ctx context.Context, params GetCustomRuleActionsRequest) (*GetCustomRuleActionsResponse, error) { @@ -156,9 +155,6 @@ func (p *appsec) GetCustomRuleActions(ctx context.Context, params GetCustomRuleA return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetCustomRuleActionsResponse - var filteredResult GetCustomRuleActionsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/custom-rules", params.ConfigID, @@ -170,26 +166,26 @@ func (p *appsec) GetCustomRuleActions(ctx context.Context, params GetCustomRuleA return nil, fmt.Errorf("failed to create GetCustomRuleActions request: %w", err) } + var result GetCustomRuleActionsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetCustomRuleActions request failed: %w", err) + return nil, fmt.Errorf("get custom rule actions request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } if params.RuleID != 0 { + var filteredResult GetCustomRuleActionsResponse for _, val := range result { if val.RuleID == params.RuleID { filteredResult = append(filteredResult, val) } } - } else { - filteredResult = result + return &filteredResult, nil } - return &filteredResult, nil + return &result, nil } func (p *appsec) UpdateCustomRuleAction(ctx context.Context, params UpdateCustomRuleActionRequest) (*UpdateCustomRuleActionResponse, error) { @@ -216,7 +212,7 @@ func (p *appsec) UpdateCustomRuleAction(ctx context.Context, params UpdateCustom var result UpdateCustomRuleActionResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateCustomRuleAction request failed: %w", err) + return nil, fmt.Errorf("update custom rule action request failed: %w", err) } if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated && resp.StatusCode != http.StatusNoContent { diff --git a/pkg/appsec/eval.go b/pkg/appsec/eval.go index dc531e86..66971730 100644 --- a/pkg/appsec/eval.go +++ b/pkg/appsec/eval.go @@ -148,8 +148,6 @@ func (p *appsec) GetEval(ctx context.Context, params GetEvalRequest) (*GetEvalRe return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetEvalResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/mode", params.ConfigID, @@ -161,17 +159,16 @@ func (p *appsec) GetEval(ctx context.Context, params GetEvalRequest) (*GetEvalRe return nil, fmt.Errorf("failed to create GetEval request: %w", err) } + var result GetEvalResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetEval request failed: %w", err) + return nil, fmt.Errorf("get eval request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } // Deprecated: this method will be removed in a future release. @@ -183,8 +180,6 @@ func (p *appsec) GetEvals(ctx context.Context, params GetEvalsRequest) (*GetEval return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetEvalsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/mode", params.ConfigID, @@ -196,17 +191,16 @@ func (p *appsec) GetEvals(ctx context.Context, params GetEvalsRequest) (*GetEval return nil, fmt.Errorf("failed to create GetEvals request: %w", err) } + var result GetEvalsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetEvals request failed: %w", err) + return nil, fmt.Errorf("get evals request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) UpdateEval(ctx context.Context, params UpdateEvalRequest) (*UpdateEvalResponse, error) { @@ -232,9 +226,8 @@ func (p *appsec) UpdateEval(ctx context.Context, params UpdateEvalRequest) (*Upd var result UpdateEvalResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateEval request failed: %w", err) + return nil, fmt.Errorf("update eval request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } @@ -244,7 +237,7 @@ func (p *appsec) UpdateEval(ctx context.Context, params UpdateEvalRequest) (*Upd func (p *appsec) RemoveEval(ctx context.Context, params RemoveEvalRequest) (*RemoveEvalResponse, error) { logger := p.Log(ctx) - logger.Debug("UpdateEval") + logger.Debug("RemoveEval") if err := params.Validate(); err != nil { return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) @@ -265,9 +258,8 @@ func (p *appsec) RemoveEval(ctx context.Context, params RemoveEvalRequest) (*Rem var result RemoveEvalResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("RemoveEval request failed: %w", err) + return nil, fmt.Errorf("remove eval request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/eval_group.go b/pkg/appsec/eval_group.go index 1e4dd08b..5af45c4a 100644 --- a/pkg/appsec/eval_group.go +++ b/pkg/appsec/eval_group.go @@ -28,8 +28,6 @@ func (p *appsec) GetEvalGroup(ctx context.Context, params GetAttackGroupRequest) return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetAttackGroupResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/eval-groups/%s?includeConditionException=true", params.ConfigID, @@ -41,31 +39,27 @@ func (p *appsec) GetEvalGroup(ctx context.Context, params GetAttackGroupRequest) if err != nil { return nil, fmt.Errorf("failed to create GetEvalGroup request: %w", err) } - logger.Debugf("BEFORE GetEvalGroup %v", result) + + var result GetAttackGroupResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetEvalGroup request failed: %w", err) + return nil, fmt.Errorf("get eval group request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } - logger.Debugf("GetEvalGroup %v", result) - return &result, nil + return &result, nil } func (p *appsec) GetEvalGroups(ctx context.Context, params GetAttackGroupsRequest) (*GetAttackGroupsResponse, error) { logger := p.Log(ctx) - logger.Debug("GetEvalGroupConditionExceptions") + logger.Debug("GetEvalGroups") if err := params.Validate(); err != nil { return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetAttackGroupsResponse - var filteredResult GetAttackGroupsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/eval-groups?includeConditionException=true", params.ConfigID, @@ -76,27 +70,27 @@ func (p *appsec) GetEvalGroups(ctx context.Context, params GetAttackGroupsReques if err != nil { return nil, fmt.Errorf("failed to create GetEvalGroups request: %w", err) } + + var result GetAttackGroupsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetEvalGroups request failed: %w", err) + return nil, fmt.Errorf("get eval groups request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } if params.Group != "" { + var filteredResult GetAttackGroupsResponse for k, val := range result.AttackGroups { if val.Group == params.Group { filteredResult.AttackGroups = append(filteredResult.AttackGroups, result.AttackGroups[k]) } } - } else { - filteredResult = result + return &filteredResult, nil } - return &filteredResult, nil - + return &result, nil } func (p *appsec) UpdateEvalGroup(ctx context.Context, params UpdateAttackGroupRequest) (*UpdateAttackGroupResponse, error) { @@ -123,9 +117,8 @@ func (p *appsec) UpdateEvalGroup(ctx context.Context, params UpdateAttackGroupRe var result UpdateAttackGroupResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateEvalGroup request failed: %w", err) + return nil, fmt.Errorf("update eval group request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/eval_host.go b/pkg/appsec/eval_host.go index 7f6971b5..e6db937a 100644 --- a/pkg/appsec/eval_host.go +++ b/pkg/appsec/eval_host.go @@ -124,8 +124,6 @@ func (p *appsec) GetEvalHost(ctx context.Context, params GetEvalHostRequest) (*G return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetEvalHostResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/selected-hostnames/eval-hostnames", params.ConfigID, @@ -136,17 +134,16 @@ func (p *appsec) GetEvalHost(ctx context.Context, params GetEvalHostRequest) (*G return nil, fmt.Errorf("failed to create GetEvalHost request: %w", err) } + var result GetEvalHostResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetEvalHost request failed: %w", err) + return nil, fmt.Errorf("get eval host request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) GetEvalHosts(ctx context.Context, params GetEvalHostsRequest) (*GetEvalHostsResponse, error) { @@ -157,8 +154,6 @@ func (p *appsec) GetEvalHosts(ctx context.Context, params GetEvalHostsRequest) ( return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetEvalHostsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/selected-hostnames/eval-hostnames", params.ConfigID, @@ -169,17 +164,16 @@ func (p *appsec) GetEvalHosts(ctx context.Context, params GetEvalHostsRequest) ( return nil, fmt.Errorf("failed to create GetEvalHosts request: %w", err) } + var result GetEvalHostsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetEvalHosts request failed: %w", err) + return nil, fmt.Errorf("get eval hosts request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) UpdateEvalHost(ctx context.Context, params UpdateEvalHostRequest) (*UpdateEvalHostResponse, error) { @@ -203,9 +197,8 @@ func (p *appsec) UpdateEvalHost(ctx context.Context, params UpdateEvalHostReques var result UpdateEvalHostResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateEvalHost request failed: %w", err) + return nil, fmt.Errorf("update eval host request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } @@ -234,9 +227,8 @@ func (p *appsec) RemoveEvalHost(ctx context.Context, params RemoveEvalHostReques var result RemoveEvalHostResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("RemoveEvalHost request failed: %w", err) + return nil, fmt.Errorf("remove eval host request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/eval_penalty_box.go b/pkg/appsec/eval_penalty_box.go index 4019de9a..e7b17730 100644 --- a/pkg/appsec/eval_penalty_box.go +++ b/pkg/appsec/eval_penalty_box.go @@ -42,15 +42,13 @@ func (p *appsec) GetEvalPenaltyBox(ctx context.Context, params GetPenaltyBoxRequ var result GetPenaltyBoxResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetEvalPenaltyBox request failed: %w", err) + return nil, fmt.Errorf("get eval penalty box request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) UpdateEvalPenaltyBox(ctx context.Context, params UpdatePenaltyBoxRequest) (*UpdatePenaltyBoxResponse, error) { @@ -76,9 +74,8 @@ func (p *appsec) UpdateEvalPenaltyBox(ctx context.Context, params UpdatePenaltyB var result UpdatePenaltyBoxResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateEvalPenaltyBox request failed: %w", err) + return nil, fmt.Errorf("update eval penalty box request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/eval_protect_host.go b/pkg/appsec/eval_protect_host.go index 8b8aa9d4..c4b1a060 100644 --- a/pkg/appsec/eval_protect_host.go +++ b/pkg/appsec/eval_protect_host.go @@ -101,8 +101,6 @@ func (p *appsec) GetEvalProtectHost(ctx context.Context, params GetEvalProtectHo return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetEvalProtectHostResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/selected-hostnames/eval-hostnames", params.ConfigID, @@ -113,17 +111,16 @@ func (p *appsec) GetEvalProtectHost(ctx context.Context, params GetEvalProtectHo return nil, fmt.Errorf("failed to create GetEvalProtectHost request: %w", err) } + var result GetEvalProtectHostResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetEvalProtectHost request failed: %w", err) + return nil, fmt.Errorf("get eval protect host request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) GetEvalProtectHosts(ctx context.Context, params GetEvalProtectHostsRequest) (*GetEvalProtectHostsResponse, error) { @@ -134,8 +131,6 @@ func (p *appsec) GetEvalProtectHosts(ctx context.Context, params GetEvalProtectH return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetEvalProtectHostsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/selected-hostnames/eval-hostnames", params.ConfigID, @@ -146,17 +141,16 @@ func (p *appsec) GetEvalProtectHosts(ctx context.Context, params GetEvalProtectH return nil, fmt.Errorf("failed to create GetEvalProtectHosts request: %w", err) } + var result GetEvalProtectHostsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetEvalProtectHosts request failed: %w", err) + return nil, fmt.Errorf("get eval protect hosts request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) UpdateEvalProtectHost(ctx context.Context, params UpdateEvalProtectHostRequest) (*UpdateEvalProtectHostResponse, error) { @@ -181,9 +175,8 @@ func (p *appsec) UpdateEvalProtectHost(ctx context.Context, params UpdateEvalPro var result UpdateEvalProtectHostResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateEvalProtectHost request failed: %w", err) + return nil, fmt.Errorf("update eval protect host request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/eval_rule.go b/pkg/appsec/eval_rule.go index 1695da32..a4031e6a 100644 --- a/pkg/appsec/eval_rule.go +++ b/pkg/appsec/eval_rule.go @@ -115,8 +115,6 @@ func (p *appsec) GetEvalRule(ctx context.Context, params GetEvalRuleRequest) (*G return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetEvalRuleResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/eval-rules/%d?includeConditionException=true", params.ConfigID, @@ -129,17 +127,16 @@ func (p *appsec) GetEvalRule(ctx context.Context, params GetEvalRuleRequest) (*G return nil, fmt.Errorf("failed to create GetEvalRule request: %w", err) } + var result GetEvalRuleResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetEvalRule request failed: %w", err) + return nil, fmt.Errorf("get eval rule request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) GetEvalRules(ctx context.Context, params GetEvalRulesRequest) (*GetEvalRulesResponse, error) { @@ -150,9 +147,6 @@ func (p *appsec) GetEvalRules(ctx context.Context, params GetEvalRulesRequest) ( return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetEvalRulesResponse - var filteredResult GetEvalRulesResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/eval-rules?includeConditionException=true", params.ConfigID, @@ -164,27 +158,26 @@ func (p *appsec) GetEvalRules(ctx context.Context, params GetEvalRulesRequest) ( return nil, fmt.Errorf("failed to create GetEvalRules request: %w", err) } + var result GetEvalRulesResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetEvalRules request failed: %w", err) + return nil, fmt.Errorf("get eval rules request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } if params.RuleID != 0 { + var filteredResult GetEvalRulesResponse for _, val := range result.Rules { if val.ID == params.RuleID { filteredResult.Rules = append(filteredResult.Rules, val) } } - } else { - filteredResult = result + return &filteredResult, nil } - return &filteredResult, nil - + return &result, nil } func (p *appsec) UpdateEvalRule(ctx context.Context, params UpdateEvalRuleRequest) (*UpdateEvalRuleResponse, error) { @@ -212,9 +205,8 @@ func (p *appsec) UpdateEvalRule(ctx context.Context, params UpdateEvalRuleReques req.Header.Set("Content-Type", "application/json") resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateEvalRule request failed: %w", err) + return nil, fmt.Errorf("update eval rule request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/export_configuration.go b/pkg/appsec/export_configuration.go index 307e4ace..77ca8389 100644 --- a/pkg/appsec/export_configuration.go +++ b/pkg/appsec/export_configuration.go @@ -756,11 +756,8 @@ func (c *ConditionsValue) UnmarshalJSON(data []byte) error { } func (p *appsec) GetExportConfiguration(ctx context.Context, params GetExportConfigurationRequest) (*GetExportConfigurationResponse, error) { - logger := p.Log(ctx) - logger.Debug("GetExportConfigurations") - - var rval GetExportConfigurationResponse + logger.Debug("GetExportConfiguration") uri := fmt.Sprintf( "/appsec/v1/export/configs/%d/versions/%d", @@ -772,27 +769,23 @@ func (p *appsec) GetExportConfiguration(ctx context.Context, params GetExportCon return nil, fmt.Errorf("failed to create GetExportConfiguration request: %w", err) } - resp, err := p.Exec(req, &rval) + var result GetExportConfigurationResponse + resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetExportConfiguration request failed: %w", err) + return nil, fmt.Errorf("get export configuration request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } - return &rval, nil - + return &result, nil } // Deprecated: this method will be removed in a future release. func (p *appsec) GetExportConfigurations(ctx context.Context, params GetExportConfigurationsRequest) (*GetExportConfigurationsResponse, error) { - logger := p.Log(ctx) logger.Debug("GetExportConfigurations") - var rval GetExportConfigurationsResponse - uri := fmt.Sprintf( "/appsec/v1/export/configs/%d/versions/%d", params.ConfigID, @@ -803,15 +796,14 @@ func (p *appsec) GetExportConfigurations(ctx context.Context, params GetExportCo return nil, fmt.Errorf("failed to create GetExportConfigurations request: %w", err) } - resp, err := p.Exec(req, &rval) + var result GetExportConfigurationsResponse + resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetExportConfigurations request failed: %w", err) + return nil, fmt.Errorf("get export configurations request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } - return &rval, nil - + return &result, nil } diff --git a/pkg/appsec/failover_hostnames.go b/pkg/appsec/failover_hostnames.go index 96badb9b..6d42bfd4 100644 --- a/pkg/appsec/failover_hostnames.go +++ b/pkg/appsec/failover_hostnames.go @@ -34,8 +34,6 @@ func (p *appsec) GetFailoverHostnames(ctx context.Context, params GetFailoverHos logger := p.Log(ctx) logger.Debug("GetFailoverHostnames") - var result GetFailoverHostnamesResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/failover-hostnames", params.ConfigID, @@ -46,15 +44,14 @@ func (p *appsec) GetFailoverHostnames(ctx context.Context, params GetFailoverHos return nil, fmt.Errorf("failed to create GetFailoverHostnames request: %w", err) } + var result GetFailoverHostnamesResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetFailoverHostnames request failed: %w", err) + return nil, fmt.Errorf("get failover hostnames request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } diff --git a/pkg/appsec/ip_geo.go b/pkg/appsec/ip_geo.go index 04c52a34..446acf26 100644 --- a/pkg/appsec/ip_geo.go +++ b/pkg/appsec/ip_geo.go @@ -112,8 +112,6 @@ func (p *appsec) GetIPGeo(ctx context.Context, params GetIPGeoRequest) (*GetIPGe return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetIPGeoResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/ip-geo-firewall", params.ConfigID, @@ -125,17 +123,16 @@ func (p *appsec) GetIPGeo(ctx context.Context, params GetIPGeoRequest) (*GetIPGe return nil, fmt.Errorf("failed to create GetIPGeo request: %w", err) } + var result GetIPGeoResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetIPGeo request failed: %w", err) + return nil, fmt.Errorf("get IPGeo request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) UpdateIPGeo(ctx context.Context, params UpdateIPGeoRequest) (*UpdateIPGeoResponse, error) { @@ -161,9 +158,8 @@ func (p *appsec) UpdateIPGeo(ctx context.Context, params UpdateIPGeoRequest) (*U var result UpdateIPGeoResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateIPGeo request failed: %w", err) + return nil, fmt.Errorf("update IPGeo request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/ip_geo_protection.go b/pkg/appsec/ip_geo_protection.go index addd4619..88de8b68 100644 --- a/pkg/appsec/ip_geo_protection.go +++ b/pkg/appsec/ip_geo_protection.go @@ -101,8 +101,6 @@ func (p *appsec) GetIPGeoProtection(ctx context.Context, params GetIPGeoProtecti return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetIPGeoProtectionResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/protections", params.ConfigID, @@ -114,17 +112,16 @@ func (p *appsec) GetIPGeoProtection(ctx context.Context, params GetIPGeoProtecti return nil, fmt.Errorf("failed to create GetIPGeoProtection request: %w", err) } + var result GetIPGeoProtectionResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetIPGeoProtection request failed: %w", err) + return nil, fmt.Errorf("get IPGeo protection request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) GetIPGeoProtections(ctx context.Context, params GetIPGeoProtectionsRequest) (*GetIPGeoProtectionsResponse, error) { @@ -135,8 +132,6 @@ func (p *appsec) GetIPGeoProtections(ctx context.Context, params GetIPGeoProtect return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetIPGeoProtectionsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/protections", params.ConfigID, @@ -148,17 +143,16 @@ func (p *appsec) GetIPGeoProtections(ctx context.Context, params GetIPGeoProtect return nil, fmt.Errorf("failed to create GetIPGeoProtections request: %w", err) } + var result GetIPGeoProtectionsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetIPGeoProtections request failed: %w", err) + return nil, fmt.Errorf("get IPGeo protections request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) UpdateIPGeoProtection(ctx context.Context, params UpdateIPGeoProtectionRequest) (*UpdateIPGeoProtectionResponse, error) { @@ -184,9 +178,8 @@ func (p *appsec) UpdateIPGeoProtection(ctx context.Context, params UpdateIPGeoPr var result UpdateIPGeoProtectionResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateIPGeoProtection request failed: %w", err) + return nil, fmt.Errorf("update IPGeo protection request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/malware_content_types.go b/pkg/appsec/malware_content_types.go index 867d2a95..f6431196 100644 --- a/pkg/appsec/malware_content_types.go +++ b/pkg/appsec/malware_content_types.go @@ -45,8 +45,6 @@ func (p *appsec) GetMalwareContentTypes(ctx context.Context, params GetMalwareCo return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetMalwareContentTypesResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/malware-policies/content-types", params.ConfigID, @@ -58,15 +56,14 @@ func (p *appsec) GetMalwareContentTypes(ctx context.Context, params GetMalwareCo return nil, fmt.Errorf("failed to create GetMalwareContentTypes request: %w", err) } + var result GetMalwareContentTypesResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetMalwareContentTypes request failed: %w", err) + return nil, fmt.Errorf("get malware content types request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } diff --git a/pkg/appsec/malware_policy.go b/pkg/appsec/malware_policy.go index 1b2e1623..e80faa95 100644 --- a/pkg/appsec/malware_policy.go +++ b/pkg/appsec/malware_policy.go @@ -166,15 +166,13 @@ func (p *appsec) CreateMalwarePolicy(ctx context.Context, params CreateMalwarePo var result MalwarePolicyResponse resp, err := p.Exec(req, &result, params.Policy) if err != nil { - return nil, fmt.Errorf("CreateMalwarePolicy request failed: %w", err) + return nil, fmt.Errorf("create malware policy request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) GetMalwarePolicy(ctx context.Context, params GetMalwarePolicyRequest) (*MalwarePolicyResponse, error) { @@ -199,15 +197,13 @@ func (p *appsec) GetMalwarePolicy(ctx context.Context, params GetMalwarePolicyRe var result MalwarePolicyResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetMalwarePolicy request failed: %w", err) + return nil, fmt.Errorf("get malware policy request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) GetMalwarePolicies(ctx context.Context, params GetMalwarePoliciesRequest) (*MalwarePoliciesResponse, error) { @@ -232,24 +228,23 @@ func (p *appsec) GetMalwarePolicies(ctx context.Context, params GetMalwarePolici var result MalwarePoliciesResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetMalwarePolicies request failed: %w", err) + return nil, fmt.Errorf("get malware policies request failed: %w", err) } if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } - var filteredResult MalwarePoliciesResponse if params.MalwarePolicyID != 0 { + var filteredResult MalwarePoliciesResponse for _, val := range result.MalwarePolicies { if val.MalwarePolicyID == params.MalwarePolicyID { filteredResult.MalwarePolicies = append(filteredResult.MalwarePolicies, val) } } - } else { - filteredResult = result + return &filteredResult, nil } - return &filteredResult, nil + return &result, nil } func (p *appsec) UpdateMalwarePolicy(ctx context.Context, params UpdateMalwarePolicyRequest) (*MalwarePolicyResponse, error) { @@ -276,9 +271,8 @@ func (p *appsec) UpdateMalwarePolicy(ctx context.Context, params UpdateMalwarePo var result MalwarePolicyResponse resp, err := p.Exec(req, &result, params.Policy) if err != nil { - return nil, fmt.Errorf("UpdateMalwarePolicy request failed: %w", err) + return nil, fmt.Errorf("update malware policy request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } @@ -302,9 +296,8 @@ func (p *appsec) RemoveMalwarePolicy(ctx context.Context, params RemoveMalwarePo resp, err := p.Exec(req, nil) if err != nil { - return fmt.Errorf("RemoveMalwarePolicy request failed: %w", err) + return fmt.Errorf("remove malware policy request failed: %w", err) } - if resp.StatusCode != http.StatusNoContent && resp.StatusCode != http.StatusOK { return p.Error(resp) } diff --git a/pkg/appsec/malware_policy_action.go b/pkg/appsec/malware_policy_action.go index 6dea1f0a..5fdaf0cb 100644 --- a/pkg/appsec/malware_policy_action.go +++ b/pkg/appsec/malware_policy_action.go @@ -128,25 +128,23 @@ func (p *appsec) GetMalwarePolicyActions(ctx context.Context, params GetMalwareP var result GetMalwarePolicyActionsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetMalwarePolicyActions request failed: %w", err) + return nil, fmt.Errorf("get malware policy actions request failed: %w", err) } if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } - var filteredResult GetMalwarePolicyActionsResponse if params.MalwarePolicyID != 0 { + var filteredResult GetMalwarePolicyActionsResponse for _, val := range result.MalwarePolicyActions { if val.MalwarePolicyID == params.MalwarePolicyID { filteredResult.MalwarePolicyActions = append(filteredResult.MalwarePolicyActions, val) } } - } else { - filteredResult = result + return &filteredResult, nil } - return &filteredResult, nil - + return &result, nil } func (p *appsec) UpdateMalwarePolicyAction(ctx context.Context, params UpdateMalwarePolicyActionRequest) (*UpdateMalwarePolicyActionResponse, error) { @@ -167,15 +165,14 @@ func (p *appsec) UpdateMalwarePolicyAction(ctx context.Context, params UpdateMal req, err := http.NewRequestWithContext(ctx, http.MethodPut, uri, nil) if err != nil { - return nil, fmt.Errorf("failed to create UpdateMalwarePolicyAction: %w", err) + return nil, fmt.Errorf("failed to create UpdateMalwarePolicyAction request: %w", err) } var result UpdateMalwarePolicyActionResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateMalwarePolicyAction request failed: %w", err) + return nil, fmt.Errorf("update malware policy action request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } @@ -200,15 +197,14 @@ func (p *appsec) UpdateMalwarePolicyActions(ctx context.Context, params UpdateMa req, err := http.NewRequestWithContext(ctx, http.MethodPut, uri, nil) if err != nil { - return nil, fmt.Errorf("failed to create UpdateMalwarePolicyActions: %w", err) + return nil, fmt.Errorf("failed to create UpdateMalwarePolicyActions request: %w", err) } var result UpdateMalwarePolicyActionsResponse resp, err := p.Exec(req, &result, params.MalwarePolicyActions) if err != nil { - return nil, fmt.Errorf("UpdateMalwarePolicyActions request failed: %w", err) + return nil, fmt.Errorf("update malware policy actions request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } diff --git a/pkg/appsec/malware_protection.go b/pkg/appsec/malware_protection.go index d7a8c4ba..6c273d32 100644 --- a/pkg/appsec/malware_protection.go +++ b/pkg/appsec/malware_protection.go @@ -93,8 +93,6 @@ func (p *appsec) GetMalwareProtection(ctx context.Context, params GetMalwareProt return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetMalwareProtectionResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/protections", params.ConfigID, @@ -106,17 +104,16 @@ func (p *appsec) GetMalwareProtection(ctx context.Context, params GetMalwareProt return nil, fmt.Errorf("failed to create GetMalwareProtection request: %w", err) } + var result GetMalwareProtectionResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetMalwareProtection request failed: %w", err) + return nil, fmt.Errorf("get malware protection request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) GetMalwareProtections(ctx context.Context, params GetMalwareProtectionsRequest) (*GetMalwareProtectionsResponse, error) { @@ -127,8 +124,6 @@ func (p *appsec) GetMalwareProtections(ctx context.Context, params GetMalwarePro return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetMalwareProtectionsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/protections", params.ConfigID, @@ -140,17 +135,16 @@ func (p *appsec) GetMalwareProtections(ctx context.Context, params GetMalwarePro return nil, fmt.Errorf("failed to create GetMalwareProtections request: %w", err) } + var result GetMalwareProtectionsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetMalwareProtections request failed: %w", err) + return nil, fmt.Errorf("get malware protections request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) UpdateMalwareProtection(ctx context.Context, params UpdateMalwareProtectionRequest) (*UpdateMalwareProtectionResponse, error) { @@ -176,9 +170,8 @@ func (p *appsec) UpdateMalwareProtection(ctx context.Context, params UpdateMalwa var result UpdateMalwareProtectionResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateMalwareProtection request failed: %w", err) + return nil, fmt.Errorf("update malware protection request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/match_target.go b/pkg/appsec/match_target.go index bc78f413..bbb1029b 100644 --- a/pkg/appsec/match_target.go +++ b/pkg/appsec/match_target.go @@ -288,8 +288,6 @@ func (p *appsec) GetMatchTarget(ctx context.Context, params GetMatchTargetReques return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetMatchTargetResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/match-targets/%d?includeChildObjectName=true", params.ConfigID, @@ -302,17 +300,16 @@ func (p *appsec) GetMatchTarget(ctx context.Context, params GetMatchTargetReques return nil, fmt.Errorf("failed to create GetMatchTarget request: %w", err) } + var result GetMatchTargetResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetMatchTarget request failed: %w", err) + return nil, fmt.Errorf("get match target request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) GetMatchTargets(ctx context.Context, params GetMatchTargetsRequest) (*GetMatchTargetsResponse, error) { @@ -323,9 +320,6 @@ func (p *appsec) GetMatchTargets(ctx context.Context, params GetMatchTargetsRequ return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetMatchTargetsResponse - var filteredResult GetMatchTargetsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/match-targets", params.ConfigID, @@ -337,16 +331,17 @@ func (p *appsec) GetMatchTargets(ctx context.Context, params GetMatchTargetsRequ return nil, fmt.Errorf("failed to create GetMatchTargets request: %w", err) } + var result GetMatchTargetsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetMatchTargets request failed: %w", err) + return nil, fmt.Errorf("get match targets request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } if params.TargetID != 0 { + var filteredResult GetMatchTargetsResponse for _, val := range result.MatchTargets.WebsiteTargets { if val.TargetID == params.TargetID { filteredResult.MatchTargets.WebsiteTargets = append(filteredResult.MatchTargets.WebsiteTargets, val) @@ -357,11 +352,10 @@ func (p *appsec) GetMatchTargets(ctx context.Context, params GetMatchTargetsRequ filteredResult.MatchTargets.APITargets = append(filteredResult.MatchTargets.APITargets, val) } } - } else { - filteredResult = result + return &filteredResult, nil } - return &filteredResult, nil + return &result, nil } func (p *appsec) UpdateMatchTarget(ctx context.Context, params UpdateMatchTargetRequest) (*UpdateMatchTargetResponse, error) { @@ -388,9 +382,8 @@ func (p *appsec) UpdateMatchTarget(ctx context.Context, params UpdateMatchTarget req.Header.Set("Content-Type", "application/json") resp, err := p.Exec(req, &result, params.JsonPayloadRaw) if err != nil { - return nil, fmt.Errorf("UpdateMatchTarget request failed: %w", err) + return nil, fmt.Errorf("update match target request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } @@ -421,15 +414,13 @@ func (p *appsec) CreateMatchTarget(ctx context.Context, params CreateMatchTarget req.Header.Set("Content-Type", "application/json") resp, err := p.Exec(req, &result, params.JsonPayloadRaw) if err != nil { - return nil, fmt.Errorf("CreateMatchTarget request failed: %w", err) + return nil, fmt.Errorf("create match target request failed: %w", err) } - if resp.StatusCode != http.StatusCreated && resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) RemoveMatchTarget(ctx context.Context, params RemoveMatchTargetRequest) (*RemoveMatchTargetResponse, error) { @@ -440,17 +431,16 @@ func (p *appsec) RemoveMatchTarget(ctx context.Context, params RemoveMatchTarget return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result RemoveMatchTargetResponse - uri := fmt.Sprintf("/appsec/v1/configs/%d/versions/%d/match-targets/%d", params.ConfigID, params.ConfigVersion, params.TargetID) req, err := http.NewRequestWithContext(ctx, http.MethodDelete, uri, nil) if err != nil { return nil, fmt.Errorf("failed to create RemoveMatchTarget request: %w", err) } + var result RemoveMatchTargetResponse resp, errd := p.Exec(req, nil) if errd != nil { - return nil, fmt.Errorf("RemoveMatchTarget request failed: %w", err) + return nil, fmt.Errorf("remove match target request failed: %w", err) } if resp.StatusCode != http.StatusNoContent && resp.StatusCode != http.StatusOK { diff --git a/pkg/appsec/match_target_sequence.go b/pkg/appsec/match_target_sequence.go index 381546dc..3f9bd352 100644 --- a/pkg/appsec/match_target_sequence.go +++ b/pkg/appsec/match_target_sequence.go @@ -80,8 +80,6 @@ func (p *appsec) GetMatchTargetSequence(ctx context.Context, params GetMatchTarg return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetMatchTargetSequenceResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/match-targets/sequence?type=%s", params.ConfigID, @@ -94,17 +92,16 @@ func (p *appsec) GetMatchTargetSequence(ctx context.Context, params GetMatchTarg return nil, fmt.Errorf("failed to create GetMatchTargetSequence request: %w", err) } + var result GetMatchTargetSequenceResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetMatchTargetSequence request failed: %w", err) + return nil, fmt.Errorf("get match target sequence request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) UpdateMatchTargetSequence(ctx context.Context, params UpdateMatchTargetSequenceRequest) (*UpdateMatchTargetSequenceResponse, error) { @@ -129,9 +126,8 @@ func (p *appsec) UpdateMatchTargetSequence(ctx context.Context, params UpdateMat var result UpdateMatchTargetSequenceResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateMatchTargetSequence request failed: %w", err) + return nil, fmt.Errorf("update match target sequence request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/network_layer_protection.go b/pkg/appsec/network_layer_protection.go index 2d9702fc..7d4a080a 100644 --- a/pkg/appsec/network_layer_protection.go +++ b/pkg/appsec/network_layer_protection.go @@ -129,8 +129,6 @@ func (p *appsec) GetNetworkLayerProtection(ctx context.Context, params GetNetwor return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetNetworkLayerProtectionResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/protections", params.ConfigID, @@ -142,17 +140,16 @@ func (p *appsec) GetNetworkLayerProtection(ctx context.Context, params GetNetwor return nil, fmt.Errorf("failed to create GetNetworkLayerProtection request: %w", err) } + var result GetNetworkLayerProtectionResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetNetworkLayerProtection request failed: %w", err) + return nil, fmt.Errorf("get network layer protection request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) GetNetworkLayerProtections(ctx context.Context, params GetNetworkLayerProtectionsRequest) (*GetNetworkLayerProtectionsResponse, error) { @@ -163,8 +160,6 @@ func (p *appsec) GetNetworkLayerProtections(ctx context.Context, params GetNetwo return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetNetworkLayerProtectionsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/protections", params.ConfigID, @@ -176,17 +171,16 @@ func (p *appsec) GetNetworkLayerProtections(ctx context.Context, params GetNetwo return nil, fmt.Errorf("failed to create GetNetworkLayerProtections request: %w", err) } + var result GetNetworkLayerProtectionsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetNetworkLayerProtections request failed: %w", err) + return nil, fmt.Errorf("get network layer protections request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) UpdateNetworkLayerProtection(ctx context.Context, params UpdateNetworkLayerProtectionRequest) (*UpdateNetworkLayerProtectionResponse, error) { @@ -212,9 +206,8 @@ func (p *appsec) UpdateNetworkLayerProtection(ctx context.Context, params Update var result UpdateNetworkLayerProtectionResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateNetworkLayerProtection request failed: %w", err) + return nil, fmt.Errorf("update network layer protection request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } @@ -245,9 +238,8 @@ func (p *appsec) RemoveNetworkLayerProtection(ctx context.Context, params Remove var result RemoveNetworkLayerProtectionResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("RemoveNetworkLayerProtection request failed: %w", err) + return nil, fmt.Errorf("remove network layer protection request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/penalty_box.go b/pkg/appsec/penalty_box.go index 3a122451..26329c05 100644 --- a/pkg/appsec/penalty_box.go +++ b/pkg/appsec/penalty_box.go @@ -112,8 +112,6 @@ func (p *appsec) GetPenaltyBox(ctx context.Context, params GetPenaltyBoxRequest) return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetPenaltyBoxResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/penalty-box", params.ConfigID, @@ -125,23 +123,22 @@ func (p *appsec) GetPenaltyBox(ctx context.Context, params GetPenaltyBoxRequest) return nil, fmt.Errorf("failed to create GetPenaltyBox request: %w", err) } + var result GetPenaltyBoxResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetPenaltyBox request failed: %w", err) + return nil, fmt.Errorf("get penalty box request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } // Deprecated: this method will be removed in a future release. func (p *appsec) GetPenaltyBoxes(ctx context.Context, params GetPenaltyBoxesRequest) (*GetPenaltyBoxesResponse, error) { logger := p.Log(ctx) - logger.Debug("GetPenaltyBoxs") + logger.Debug("GetPenaltyBoxes") if err := params.Validate(); err != nil { return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) @@ -162,15 +159,13 @@ func (p *appsec) GetPenaltyBoxes(ctx context.Context, params GetPenaltyBoxesRequ resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetPenaltyBoxes request failed: %w", err) + return nil, fmt.Errorf("get penalty boxes request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) UpdatePenaltyBox(ctx context.Context, params UpdatePenaltyBoxRequest) (*UpdatePenaltyBoxResponse, error) { @@ -196,9 +191,8 @@ func (p *appsec) UpdatePenaltyBox(ctx context.Context, params UpdatePenaltyBoxRe var result UpdatePenaltyBoxResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdatePenaltyBox request failed: %w", err) + return nil, fmt.Errorf("update penalty box request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/rate_policy.go b/pkg/appsec/rate_policy.go index 28bbbfdf..f524ea72 100644 --- a/pkg/appsec/rate_policy.go +++ b/pkg/appsec/rate_policy.go @@ -346,8 +346,6 @@ func (p *appsec) GetRatePolicy(ctx context.Context, params GetRatePolicyRequest) return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetRatePolicyResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/rate-policies/%d", params.ConfigID, @@ -359,17 +357,16 @@ func (p *appsec) GetRatePolicy(ctx context.Context, params GetRatePolicyRequest) return nil, fmt.Errorf("failed to create GetRatePolicy request: %w", err) } + var result GetRatePolicyResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetRatePolicy request failed: %w", err) + return nil, fmt.Errorf("get rate policy request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) GetRatePolicies(ctx context.Context, params GetRatePoliciesRequest) (*GetRatePoliciesResponse, error) { @@ -380,9 +377,6 @@ func (p *appsec) GetRatePolicies(ctx context.Context, params GetRatePoliciesRequ return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetRatePoliciesResponse - var filteredResult GetRatePoliciesResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/rate-policies", params.ConfigID, @@ -394,28 +388,26 @@ func (p *appsec) GetRatePolicies(ctx context.Context, params GetRatePoliciesRequ return nil, fmt.Errorf("failed to create GetRatePolicies request: %w", err) } + var result GetRatePoliciesResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetRatePolicies request failed: %w", err) + return nil, fmt.Errorf("get rate policies request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } if params.RatePolicyID != 0 { + var filteredResult GetRatePoliciesResponse for _, val := range result.RatePolicies { if val.ID == params.RatePolicyID { filteredResult.RatePolicies = append(filteredResult.RatePolicies, val) } } - - } else { - filteredResult = result + return &filteredResult, nil } - return &filteredResult, nil - + return &result, nil } func (p *appsec) UpdateRatePolicy(ctx context.Context, params UpdateRatePolicyRequest) (*UpdateRatePolicyResponse, error) { @@ -442,9 +434,8 @@ func (p *appsec) UpdateRatePolicy(ctx context.Context, params UpdateRatePolicyRe req.Header.Set("Content-Type", "application/json") resp, err := p.Exec(req, &result, params.JsonPayloadRaw) if err != nil { - return nil, fmt.Errorf("UpdateRatePolicy request failed: %w", err) + return nil, fmt.Errorf("update rate policy request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } @@ -475,15 +466,13 @@ func (p *appsec) CreateRatePolicy(ctx context.Context, params CreateRatePolicyRe req.Header.Set("Content-Type", "application/json") resp, err := p.Exec(req, &result, params.JsonPayloadRaw) if err != nil { - return nil, fmt.Errorf("CreateRatePolicy request failed: %w", err) + return nil, fmt.Errorf("create rate policy request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) RemoveRatePolicy(ctx context.Context, params RemoveRatePolicyRequest) (*RemoveRatePolicyResponse, error) { @@ -494,19 +483,17 @@ func (p *appsec) RemoveRatePolicy(ctx context.Context, params RemoveRatePolicyRe return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result RemoveRatePolicyResponse - uri := fmt.Sprintf("/appsec/v1/configs/%d/versions/%d/rate-policies/%d", params.ConfigID, params.ConfigVersion, params.RatePolicyID) req, err := http.NewRequestWithContext(ctx, http.MethodDelete, uri, nil) if err != nil { return nil, fmt.Errorf("failed to create RemoveRatePolicy request: %w", err) } + var result RemoveRatePolicyResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("RemoveRatePolicy request failed: %w", err) + return nil, fmt.Errorf("remove rate policy request failed: %w", err) } - if resp.StatusCode != http.StatusNoContent && resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } diff --git a/pkg/appsec/rate_policy_action.go b/pkg/appsec/rate_policy_action.go index 3f33faca..ee21713b 100644 --- a/pkg/appsec/rate_policy_action.go +++ b/pkg/appsec/rate_policy_action.go @@ -128,8 +128,6 @@ func (p *appsec) GetRatePolicyAction(ctx context.Context, params GetRatePolicyAc return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetRatePolicyActionResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/rate-policies", params.ConfigID, @@ -141,17 +139,16 @@ func (p *appsec) GetRatePolicyAction(ctx context.Context, params GetRatePolicyAc return nil, fmt.Errorf("failed to create GetRatePolicyAction request: %w", err) } + var result GetRatePolicyActionResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetRatePolicyAction request failed: %w", err) + return nil, fmt.Errorf("get rate policy action request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) GetRatePolicyActions(ctx context.Context, params GetRatePolicyActionsRequest) (*GetRatePolicyActionsResponse, error) { @@ -162,9 +159,6 @@ func (p *appsec) GetRatePolicyActions(ctx context.Context, params GetRatePolicyA return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetRatePolicyActionsResponse - var filteredResult GetRatePolicyActionsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/rate-policies", params.ConfigID, @@ -176,28 +170,26 @@ func (p *appsec) GetRatePolicyActions(ctx context.Context, params GetRatePolicyA return nil, fmt.Errorf("failed to create GetRatePolicyActions request: %w", err) } + var result GetRatePolicyActionsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetRatePolicyActions request failed: %w", err) + return nil, fmt.Errorf("get rate policy actions request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } if params.RatePolicyID != 0 { + var filteredResult GetRatePolicyActionsResponse for _, val := range result.RatePolicyActions { if val.ID == params.RatePolicyID { filteredResult.RatePolicyActions = append(filteredResult.RatePolicyActions, val) } } - - } else { - filteredResult = result + return &filteredResult, nil } - return &filteredResult, nil - + return &result, nil } func (p *appsec) UpdateRatePolicyAction(ctx context.Context, params UpdateRatePolicyActionRequest) (*UpdateRatePolicyActionResponse, error) { @@ -218,15 +210,14 @@ func (p *appsec) UpdateRatePolicyAction(ctx context.Context, params UpdateRatePo req, err := http.NewRequestWithContext(ctx, http.MethodPut, uri, nil) if err != nil { - return nil, fmt.Errorf("failed to create UpdateRatePolicyAction: %w", err) + return nil, fmt.Errorf("failed to create UpdateRatePolicyAction request: %w", err) } var result UpdateRatePolicyActionResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateRatePolicyAction request failed: %w", err) + return nil, fmt.Errorf("update rate policy action request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/rate_protection.go b/pkg/appsec/rate_protection.go index ccd5ba15..bc3bb514 100644 --- a/pkg/appsec/rate_protection.go +++ b/pkg/appsec/rate_protection.go @@ -101,8 +101,6 @@ func (p *appsec) GetRateProtection(ctx context.Context, params GetRateProtection return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetRateProtectionResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/protections", params.ConfigID, @@ -114,17 +112,16 @@ func (p *appsec) GetRateProtection(ctx context.Context, params GetRateProtection return nil, fmt.Errorf("failed to create GetRateProtection request: %w", err) } + var result GetRateProtectionResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetRateProtection request failed: %w", err) + return nil, fmt.Errorf("get rate protection request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) GetRateProtections(ctx context.Context, params GetRateProtectionsRequest) (*GetRateProtectionsResponse, error) { @@ -135,8 +132,6 @@ func (p *appsec) GetRateProtections(ctx context.Context, params GetRateProtectio return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetRateProtectionsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/protections", params.ConfigID, @@ -148,17 +143,16 @@ func (p *appsec) GetRateProtections(ctx context.Context, params GetRateProtectio return nil, fmt.Errorf("failed to create GetRateProtections request: %w", err) } + var result GetRateProtectionsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetRateProtections request failed: %w", err) + return nil, fmt.Errorf("get rate protections request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) UpdateRateProtection(ctx context.Context, params UpdateRateProtectionRequest) (*UpdateRateProtectionResponse, error) { @@ -184,9 +178,8 @@ func (p *appsec) UpdateRateProtection(ctx context.Context, params UpdateRateProt var result UpdateRateProtectionResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateRateProtection request failed: %w", err) + return nil, fmt.Errorf("update rate protection request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/reputation_analysis.go b/pkg/appsec/reputation_analysis.go index d023ee66..9ce6fd39 100644 --- a/pkg/appsec/reputation_analysis.go +++ b/pkg/appsec/reputation_analysis.go @@ -106,8 +106,6 @@ func (p *appsec) GetReputationAnalysis(ctx context.Context, params GetReputation return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetReputationAnalysisResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/reputation-analysis", params.ConfigID, @@ -119,17 +117,16 @@ func (p *appsec) GetReputationAnalysis(ctx context.Context, params GetReputation return nil, fmt.Errorf("failed to create GetReputationAnalysis request: %w", err) } + var result GetReputationAnalysisResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetReputationAnalysis request failed: %w", err) + return nil, fmt.Errorf("get reputation analysis request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) UpdateReputationAnalysis(ctx context.Context, params UpdateReputationAnalysisRequest) (*UpdateReputationAnalysisResponse, error) { @@ -155,9 +152,8 @@ func (p *appsec) UpdateReputationAnalysis(ctx context.Context, params UpdateRepu var result UpdateReputationAnalysisResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateReputationAnalysis request failed: %w", err) + return nil, fmt.Errorf("update reputation analysis request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } @@ -169,8 +165,6 @@ func (p *appsec) RemoveReputationAnalysis(ctx context.Context, params RemoveRepu logger := p.Log(ctx) logger.Debug("RemoveReputationAnalysis") - var result RemoveReputationAnalysisResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/reputation-analysis", params.ConfigID, @@ -183,11 +177,11 @@ func (p *appsec) RemoveReputationAnalysis(ctx context.Context, params RemoveRepu return nil, fmt.Errorf("failed to create RemoveReputationAnalysis request: %w", err) } + var result RemoveReputationAnalysisResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("RemoveReputationAnalysis request failed: %w", err) + return nil, fmt.Errorf("remove reputation analysis request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/reputation_profile.go b/pkg/appsec/reputation_profile.go index f9452c42..3bdd0fd5 100644 --- a/pkg/appsec/reputation_profile.go +++ b/pkg/appsec/reputation_profile.go @@ -324,8 +324,6 @@ func (p *appsec) GetReputationProfile(ctx context.Context, params GetReputationP return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetReputationProfileResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/reputation-profiles/%d", params.ConfigID, @@ -337,17 +335,16 @@ func (p *appsec) GetReputationProfile(ctx context.Context, params GetReputationP return nil, fmt.Errorf("failed to create GetReputationProfile request: %w", err) } + var result GetReputationProfileResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetReputationProfile request failed: %w", err) + return nil, fmt.Errorf("get reputation profile request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) GetReputationProfiles(ctx context.Context, params GetReputationProfilesRequest) (*GetReputationProfilesResponse, error) { @@ -358,9 +355,6 @@ func (p *appsec) GetReputationProfiles(ctx context.Context, params GetReputation return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetReputationProfilesResponse - var filteredResult GetReputationProfilesResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/reputation-profiles", params.ConfigID, @@ -372,28 +366,26 @@ func (p *appsec) GetReputationProfiles(ctx context.Context, params GetReputation return nil, fmt.Errorf("failed to create GetReputationProfiles request: %w", err) } + var result GetReputationProfilesResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetReputationProfiles request failed: %w", err) + return nil, fmt.Errorf("get reputation profiles request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } if params.ReputationProfileId != 0 { + var filteredResult GetReputationProfilesResponse for _, val := range result.ReputationProfiles { if val.ID == params.ReputationProfileId { filteredResult.ReputationProfiles = append(filteredResult.ReputationProfiles, val) } } - - } else { - filteredResult = result + return &filteredResult, nil } - return &filteredResult, nil - + return &result, nil } func (p *appsec) UpdateReputationProfile(ctx context.Context, params UpdateReputationProfileRequest) (*UpdateReputationProfileResponse, error) { @@ -415,14 +407,13 @@ func (p *appsec) UpdateReputationProfile(ctx context.Context, params UpdateReput if err != nil { return nil, fmt.Errorf("failed to create UpdateReputationProfile request: %w", err) } - req.Header.Set("Content-Type", "application/json") + var result UpdateReputationProfileResponse resp, err := p.Exec(req, &result, params.JsonPayloadRaw) if err != nil { - return nil, fmt.Errorf("UpdateReputationProfile request failed: %w", err) + return nil, fmt.Errorf("update reputation profile request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } @@ -453,15 +444,13 @@ func (p *appsec) CreateReputationProfile(ctx context.Context, params CreateReput req.Header.Set("Content-Type", "application/json") resp, err := p.Exec(req, &result, params.JsonPayloadRaw) if err != nil { - return nil, fmt.Errorf("CreateReputationProfile request failed: %w", err) + return nil, fmt.Errorf("create reputation profile request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) RemoveReputationProfile(ctx context.Context, params RemoveReputationProfileRequest) (*RemoveReputationProfileResponse, error) { @@ -472,19 +461,17 @@ func (p *appsec) RemoveReputationProfile(ctx context.Context, params RemoveReput return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result RemoveReputationProfileResponse - uri := fmt.Sprintf("/appsec/v1/configs/%d/versions/%d/reputation-profiles/%d", params.ConfigID, params.ConfigVersion, params.ReputationProfileId) req, err := http.NewRequestWithContext(ctx, http.MethodDelete, uri, nil) if err != nil { return nil, fmt.Errorf("failed to create RemoveReputationProfile request: %w", err) } + var result RemoveReputationProfileResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("RemoveReputationProfile request failed: %w", err) + return nil, fmt.Errorf("remove reputation profile request failed: %w", err) } - if resp.StatusCode != http.StatusNoContent && resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } diff --git a/pkg/appsec/reputation_profile_action.go b/pkg/appsec/reputation_profile_action.go index 2357d737..626ce04b 100644 --- a/pkg/appsec/reputation_profile_action.go +++ b/pkg/appsec/reputation_profile_action.go @@ -111,8 +111,6 @@ func (p *appsec) GetReputationProfileAction(ctx context.Context, params GetReput return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetReputationProfileActionResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/reputation-profiles/%d", params.ConfigID, @@ -125,17 +123,16 @@ func (p *appsec) GetReputationProfileAction(ctx context.Context, params GetReput return nil, fmt.Errorf("failed to create GetReputationProfileAction request: %w", err) } + var result GetReputationProfileActionResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetReputationProfileAction request failed: %w", err) + return nil, fmt.Errorf("get reputation profile action request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) GetReputationProfileActions(ctx context.Context, params GetReputationProfileActionsRequest) (*GetReputationProfileActionsResponse, error) { @@ -146,9 +143,6 @@ func (p *appsec) GetReputationProfileActions(ctx context.Context, params GetRepu return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetReputationProfileActionsResponse - var filteredResult GetReputationProfileActionsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/reputation-profiles", params.ConfigID, @@ -160,28 +154,26 @@ func (p *appsec) GetReputationProfileActions(ctx context.Context, params GetRepu return nil, fmt.Errorf("failed to create GetReputationProfileActions request: %w", err) } + var result GetReputationProfileActionsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetReputationProfileActions request failed: %w", err) + return nil, fmt.Errorf("get reputation profile actions request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } if params.ReputationProfileID != 0 { + var filteredResult GetReputationProfileActionsResponse for _, val := range result.ReputationProfiles { if val.ID == params.ReputationProfileID { filteredResult.ReputationProfiles = append(filteredResult.ReputationProfiles, val) } } - - } else { - filteredResult = result + return &filteredResult, nil } - return &filteredResult, nil - + return &result, nil } func (p *appsec) UpdateReputationProfileAction(ctx context.Context, params UpdateReputationProfileActionRequest) (*UpdateReputationProfileActionResponse, error) { @@ -208,9 +200,8 @@ func (p *appsec) UpdateReputationProfileAction(ctx context.Context, params Updat var result UpdateReputationProfileActionResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateReputationProfileAction request failed: %w", err) + return nil, fmt.Errorf("update reputation profile action request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/reputation_protection.go b/pkg/appsec/reputation_protection.go index f64fd87c..aba83084 100644 --- a/pkg/appsec/reputation_protection.go +++ b/pkg/appsec/reputation_protection.go @@ -129,8 +129,6 @@ func (p *appsec) GetReputationProtection(ctx context.Context, params GetReputati return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetReputationProtectionResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/protections", params.ConfigID, @@ -142,17 +140,16 @@ func (p *appsec) GetReputationProtection(ctx context.Context, params GetReputati return nil, fmt.Errorf("failed to create GetReputationProtection request: %w", err) } + var result GetReputationProtectionResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetReputationProtection request failed: %w", err) + return nil, fmt.Errorf("get reputation protection request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) GetReputationProtections(ctx context.Context, params GetReputationProtectionsRequest) (*GetReputationProtectionsResponse, error) { @@ -163,8 +160,6 @@ func (p *appsec) GetReputationProtections(ctx context.Context, params GetReputat return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetReputationProtectionsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/protections", params.ConfigID, @@ -176,17 +171,16 @@ func (p *appsec) GetReputationProtections(ctx context.Context, params GetReputat return nil, fmt.Errorf("failed to create GetReputationProtections request: %w", err) } + var result GetReputationProtectionsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetReputationProtections request failed: %w", err) + return nil, fmt.Errorf("get reputation protections request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) UpdateReputationProtection(ctx context.Context, params UpdateReputationProtectionRequest) (*UpdateReputationProtectionResponse, error) { @@ -212,9 +206,8 @@ func (p *appsec) UpdateReputationProtection(ctx context.Context, params UpdateRe var result UpdateReputationProtectionResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateReputationProtection request failed: %w", err) + return nil, fmt.Errorf("update reputation protection request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } @@ -245,9 +238,8 @@ func (p *appsec) RemoveReputationProtection(ctx context.Context, params RemoveRe var result RemoveReputationProtectionResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("RemoveReputationProtection request failed: %w", err) + return nil, fmt.Errorf("remove reputation protection request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/rule.go b/pkg/appsec/rule.go index 67959839..a0259309 100644 --- a/pkg/appsec/rule.go +++ b/pkg/appsec/rule.go @@ -206,8 +206,6 @@ func (p *appsec) GetRule(ctx context.Context, params GetRuleRequest) (*GetRuleRe return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetRuleResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/rules/%d?includeConditionException=true", params.ConfigID, @@ -220,17 +218,16 @@ func (p *appsec) GetRule(ctx context.Context, params GetRuleRequest) (*GetRuleRe return nil, fmt.Errorf("failed to create GetRule request: %w", err) } + var result GetRuleResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetRule request failed: %w", err) + return nil, fmt.Errorf("get rule request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) GetRules(ctx context.Context, params GetRulesRequest) (*GetRulesResponse, error) { @@ -241,9 +238,6 @@ func (p *appsec) GetRules(ctx context.Context, params GetRulesRequest) (*GetRule return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetRulesResponse - var filteredResult GetRulesResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/rules?includeConditionException=true", params.ConfigID, @@ -255,28 +249,26 @@ func (p *appsec) GetRules(ctx context.Context, params GetRulesRequest) (*GetRule return nil, fmt.Errorf("failed to create GetRules request: %w", err) } + var result GetRulesResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetRules request failed: %w", err) + return nil, fmt.Errorf("get rules request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } if params.RuleID != 0 { + var filteredResult GetRulesResponse for _, val := range result.Rules { if val.ID == params.RuleID { filteredResult.Rules = append(filteredResult.Rules, val) } } - - } else { - filteredResult = result + return &filteredResult, nil } - return &filteredResult, nil - + return &result, nil } func (p *appsec) UpdateRule(ctx context.Context, params UpdateRuleRequest) (*UpdateRuleResponse, error) { @@ -303,9 +295,8 @@ func (p *appsec) UpdateRule(ctx context.Context, params UpdateRuleRequest) (*Upd var result UpdateRuleResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateRule request failed: %w", err) + return nil, fmt.Errorf("update rule request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } @@ -337,9 +328,8 @@ func (p *appsec) UpdateRuleConditionException(ctx context.Context, params Update var result UpdateConditionExceptionResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateRuleConditionException request failed: %w", err) + return nil, fmt.Errorf("update rule condition exception request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/rule_upgrade.go b/pkg/appsec/rule_upgrade.go index e4b86750..42881981 100644 --- a/pkg/appsec/rule_upgrade.go +++ b/pkg/appsec/rule_upgrade.go @@ -103,8 +103,6 @@ func (p *appsec) GetRuleUpgrade(ctx context.Context, params GetRuleUpgradeReques return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetRuleUpgradeResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/rules/upgrade-details", params.ConfigID, @@ -117,17 +115,16 @@ func (p *appsec) GetRuleUpgrade(ctx context.Context, params GetRuleUpgradeReques return nil, fmt.Errorf("failed to create GetRuleUpgrade request: %w", err) } + var result GetRuleUpgradeResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetRuleUpgrade request failed: %w", err) + return nil, fmt.Errorf("get rule upgrade request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) UpdateRuleUpgrade(ctx context.Context, params UpdateRuleUpgradeRequest) (*UpdateRuleUpgradeResponse, error) { @@ -153,9 +150,8 @@ func (p *appsec) UpdateRuleUpgrade(ctx context.Context, params UpdateRuleUpgrade var result UpdateRuleUpgradeResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateRuleUpgrade request failed: %w", err) + return nil, fmt.Errorf("update rule upgrade request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/security_policy.go b/pkg/appsec/security_policy.go index f68becf6..c5de91fa 100644 --- a/pkg/appsec/security_policy.go +++ b/pkg/appsec/security_policy.go @@ -204,10 +204,7 @@ func (v RemoveSecurityPolicyRequest) Validate() error { func (p *appsec) GetSecurityPolicies(ctx context.Context, params GetSecurityPoliciesRequest) (*GetSecurityPoliciesResponse, error) { logger := p.Log(ctx) - logger.Debug("GetSecurityPolicys") - - var result GetSecurityPoliciesResponse - var filteredResult GetSecurityPoliciesResponse + logger.Debug("GetSecurityPolicies") uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies", @@ -219,35 +216,31 @@ func (p *appsec) GetSecurityPolicies(ctx context.Context, params GetSecurityPoli return nil, fmt.Errorf("failed to create GetSecurityPolicies request: %w", err) } + var result GetSecurityPoliciesResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetSecurityPolicies request failed: %w", err) + return nil, fmt.Errorf("get security policies request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } if params.PolicyName != "" { + var filteredResult GetSecurityPoliciesResponse for _, val := range result.Policies { if val.PolicyName == params.PolicyName { filteredResult.Policies = append(filteredResult.Policies, val) } } - - } else { - filteredResult = result + return &filteredResult, nil } - return &filteredResult, nil - + return &result, nil } func (p *appsec) GetSecurityPolicy(ctx context.Context, params GetSecurityPolicyRequest) (*GetSecurityPolicyResponse, error) { logger := p.Log(ctx) - logger.Debug("GetSecurityPolicys") - - var result GetSecurityPolicyResponse + logger.Debug("GetSecurityPolicy") uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s", @@ -260,17 +253,16 @@ func (p *appsec) GetSecurityPolicy(ctx context.Context, params GetSecurityPolicy return nil, fmt.Errorf("failed to create GetSecurityPolicy request: %w", err) } + var result GetSecurityPolicyResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetSecurityPolicy request failed: %w", err) + return nil, fmt.Errorf("get security policy request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) UpdateSecurityPolicy(ctx context.Context, params UpdateSecurityPolicyRequest) (*UpdateSecurityPolicyResponse, error) { @@ -296,9 +288,8 @@ func (p *appsec) UpdateSecurityPolicy(ctx context.Context, params UpdateSecurity var result UpdateSecurityPolicyResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateSecurityPolicy request failed: %w", err) + return nil, fmt.Errorf("update security policy request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } @@ -325,18 +316,15 @@ func (p *appsec) CreateSecurityPolicy(ctx context.Context, params CreateSecurity } var result CreateSecurityPolicyResponse - resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("CreateSecurityPolicy request failed: %w", err) + return nil, fmt.Errorf("create security policy request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) RemoveSecurityPolicy(ctx context.Context, params RemoveSecurityPolicyRequest) (*RemoveSecurityPolicyResponse, error) { @@ -347,19 +335,17 @@ func (p *appsec) RemoveSecurityPolicy(ctx context.Context, params RemoveSecurity return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result RemoveSecurityPolicyResponse - uri := fmt.Sprintf("/appsec/v1/configs/%d/versions/%d/security-policies/%s", params.ConfigID, params.Version, params.PolicyID) req, err := http.NewRequestWithContext(ctx, http.MethodDelete, uri, nil) if err != nil { return nil, fmt.Errorf("failed to create RemoveSecurityPolicy request: %w", err) } + var result RemoveSecurityPolicyResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("RemoveSecurityPolicy request failed: %w", err) + return nil, fmt.Errorf("remove security policy request failed: %w", err) } - if resp.StatusCode != http.StatusNoContent && resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } diff --git a/pkg/appsec/security_policy_clone.go b/pkg/appsec/security_policy_clone.go index c3241922..10e20543 100644 --- a/pkg/appsec/security_policy_clone.go +++ b/pkg/appsec/security_policy_clone.go @@ -179,8 +179,6 @@ func (p *appsec) GetSecurityPolicyClone(ctx context.Context, params GetSecurityP return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var results GetSecurityPolicyCloneResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s", params.ConfigID, @@ -192,17 +190,16 @@ func (p *appsec) GetSecurityPolicyClone(ctx context.Context, params GetSecurityP return nil, fmt.Errorf("failed to create GetSecurityPolicyClone request: %w", err) } + var results GetSecurityPolicyCloneResponse resp, err := p.Exec(req, &results) if err != nil { - return nil, fmt.Errorf("GetSecurityPolicyClone request failed: %w", err) + return nil, fmt.Errorf("get security policy clone request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &results, nil - } func (p *appsec) GetSecurityPolicyClones(ctx context.Context, params GetSecurityPolicyClonesRequest) (*GetSecurityPolicyClonesResponse, error) { @@ -213,8 +210,6 @@ func (p *appsec) GetSecurityPolicyClones(ctx context.Context, params GetSecurity return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetSecurityPolicyClonesResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies?detail=true¬Matched=false", params.ConfigID, @@ -225,17 +220,16 @@ func (p *appsec) GetSecurityPolicyClones(ctx context.Context, params GetSecurity return nil, fmt.Errorf("failed to create GetSecurityPolicyClones request: %w", err) } + var result GetSecurityPolicyClonesResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetSecurityPolicyClones request failed: %w", err) + return nil, fmt.Errorf("get security policy clones request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) CreateSecurityPolicyClone(ctx context.Context, params CreateSecurityPolicyCloneRequest) (*CreateSecurityPolicyCloneResponse, error) { @@ -257,16 +251,13 @@ func (p *appsec) CreateSecurityPolicyClone(ctx context.Context, params CreateSec } var result CreateSecurityPolicyCloneResponse - resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("CreateSecurityPolicyClone request failed: %w", err) + return nil, fmt.Errorf("create security policy clone request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } return &result, nil - } diff --git a/pkg/appsec/security_policy_protections.go b/pkg/appsec/security_policy_protections.go index 0852b94f..7b3c6f70 100644 --- a/pkg/appsec/security_policy_protections.go +++ b/pkg/appsec/security_policy_protections.go @@ -116,8 +116,6 @@ func (p *appsec) GetPolicyProtections(ctx context.Context, params GetPolicyProte return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result PolicyProtectionsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/protections", params.ConfigID, @@ -129,17 +127,16 @@ func (p *appsec) GetPolicyProtections(ctx context.Context, params GetPolicyProte return nil, fmt.Errorf("failed to create GetPolicyProtections request: %w", err) } + var result PolicyProtectionsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetPolicyProtections request failed: %w", err) + return nil, fmt.Errorf("get policy protections request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) UpdatePolicyProtections(ctx context.Context, params UpdatePolicyProtectionsRequest) (*PolicyProtectionsResponse, error) { @@ -165,9 +162,8 @@ func (p *appsec) UpdatePolicyProtections(ctx context.Context, params UpdatePolic var result PolicyProtectionsResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdatePolicyProtections request failed: %w", err) + return nil, fmt.Errorf("update policy protections request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } @@ -198,9 +194,8 @@ func (p *appsec) RemovePolicyProtections(ctx context.Context, params UpdatePolic var result PolicyProtectionsResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("RemovePolicyProtections request failed: %w", err) + return nil, fmt.Errorf("remove policy protections request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/selectable_hostnames.go b/pkg/appsec/selectable_hostnames.go index 56dd0296..6f8c43b0 100644 --- a/pkg/appsec/selectable_hostnames.go +++ b/pkg/appsec/selectable_hostnames.go @@ -45,8 +45,6 @@ func (p *appsec) GetSelectableHostnames(ctx context.Context, params GetSelectabl logger := p.Log(ctx) logger.Debug("GetSelectableHostnamess") - var result GetSelectableHostnamesResponse - var uri string if params.ConfigID != 0 { @@ -66,15 +64,14 @@ func (p *appsec) GetSelectableHostnames(ctx context.Context, params GetSelectabl return nil, fmt.Errorf("failed to create GetSelectableHostnames request: %w", err) } + var result GetSelectableHostnamesResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetSelectableHostnames request failed: %w", err) + return nil, fmt.Errorf("get selectable hostnames request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } diff --git a/pkg/appsec/selected_hostname.go b/pkg/appsec/selected_hostname.go index 1eeea6c5..94351df8 100644 --- a/pkg/appsec/selected_hostname.go +++ b/pkg/appsec/selected_hostname.go @@ -133,8 +133,6 @@ func (p *appsec) GetSelectedHostname(ctx context.Context, params GetSelectedHost return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetSelectedHostnameResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/selected-hostnames", params.ConfigID, @@ -145,17 +143,16 @@ func (p *appsec) GetSelectedHostname(ctx context.Context, params GetSelectedHost return nil, fmt.Errorf("failed to create GetSelectedHostname request: %w", err) } + var result GetSelectedHostnameResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetSelectedHostname request failed: %w", err) + return nil, fmt.Errorf("get selected hostname request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) GetSelectedHostnames(ctx context.Context, params GetSelectedHostnamesRequest) (*GetSelectedHostnamesResponse, error) { @@ -166,8 +163,6 @@ func (p *appsec) GetSelectedHostnames(ctx context.Context, params GetSelectedHos return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetSelectedHostnamesResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/selected-hostnames", params.ConfigID, @@ -178,17 +173,16 @@ func (p *appsec) GetSelectedHostnames(ctx context.Context, params GetSelectedHos return nil, fmt.Errorf("failed to create GetSelectedHostnames request: %w", err) } + var result GetSelectedHostnamesResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetSelectedHostnames request failed: %w", err) + return nil, fmt.Errorf("get selected hostnames request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) UpdateSelectedHostnames(ctx context.Context, params UpdateSelectedHostnamesRequest) (*UpdateSelectedHostnamesResponse, error) { @@ -213,9 +207,8 @@ func (p *appsec) UpdateSelectedHostnames(ctx context.Context, params UpdateSelec var result UpdateSelectedHostnamesResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateSelectedHostnames request failed: %w", err) + return nil, fmt.Errorf("update selected hostnames request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } @@ -246,9 +239,8 @@ func (p *appsec) UpdateSelectedHostname(ctx context.Context, params UpdateSelect var result UpdateSelectedHostnameResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateSelectedHostname request failed: %w", err) + return nil, fmt.Errorf("update selected hostname request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/siem_definitions.go b/pkg/appsec/siem_definitions.go index fc1edf9a..409cf0ee 100644 --- a/pkg/appsec/siem_definitions.go +++ b/pkg/appsec/siem_definitions.go @@ -34,9 +34,6 @@ func (p *appsec) GetSiemDefinitions(ctx context.Context, params GetSiemDefinitio logger := p.Log(ctx) logger.Debug("GetSiemDefinitions") - var result GetSiemDefinitionsResponse - var filteredResult GetSiemDefinitionsResponse - uri := "/appsec/v1/siem-definitions" req, err := http.NewRequestWithContext(ctx, http.MethodGet, uri, nil) @@ -44,26 +41,24 @@ func (p *appsec) GetSiemDefinitions(ctx context.Context, params GetSiemDefinitio return nil, fmt.Errorf("failed to create GetSiemDefinitions request: %w", err) } + var result GetSiemDefinitionsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetSiemDefinitions request failed: %w", err) + return nil, fmt.Errorf("get siem definitions request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } if params.SiemDefinitionName != "" { + var filteredResult GetSiemDefinitionsResponse for _, val := range result.SiemDefinitions { if val.Name == params.SiemDefinitionName { filteredResult.SiemDefinitions = append(filteredResult.SiemDefinitions, val) } } - - } else { - filteredResult = result + return &filteredResult, nil } - return &filteredResult, nil - + return &result, nil } diff --git a/pkg/appsec/siem_settings.go b/pkg/appsec/siem_settings.go index 430925d1..c115bcd6 100644 --- a/pkg/appsec/siem_settings.go +++ b/pkg/appsec/siem_settings.go @@ -130,8 +130,6 @@ func (p *appsec) GetSiemSettings(ctx context.Context, params GetSiemSettingsRequ return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetSiemSettingsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/siem", params.ConfigID, @@ -143,17 +141,16 @@ func (p *appsec) GetSiemSettings(ctx context.Context, params GetSiemSettingsRequ return nil, fmt.Errorf("failed to create GetSiemSettings request: %w", err) } + var result GetSiemSettingsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetSiemSettings request failed: %w", err) + return nil, fmt.Errorf("get siem settings request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) UpdateSiemSettings(ctx context.Context, params UpdateSiemSettingsRequest) (*UpdateSiemSettingsResponse, error) { @@ -178,9 +175,8 @@ func (p *appsec) UpdateSiemSettings(ctx context.Context, params UpdateSiemSettin var result UpdateSiemSettingsResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateSiemSettings request failed: %w", err) + return nil, fmt.Errorf("update siem settings request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } @@ -211,9 +207,8 @@ func (p *appsec) RemoveSiemSettings(ctx context.Context, params RemoveSiemSettin var result RemoveSiemSettingsResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("RemoveSiemSettings request failed: %w", err) + return nil, fmt.Errorf("remove siem settings request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/slow_post_protection_setting.go b/pkg/appsec/slow_post_protection_setting.go index 2119d16b..e93a466b 100644 --- a/pkg/appsec/slow_post_protection_setting.go +++ b/pkg/appsec/slow_post_protection_setting.go @@ -149,8 +149,6 @@ func (p *appsec) GetSlowPostProtectionSetting(ctx context.Context, params GetSlo return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetSlowPostProtectionSettingResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/slow-post", params.ConfigID, @@ -162,17 +160,16 @@ func (p *appsec) GetSlowPostProtectionSetting(ctx context.Context, params GetSlo return nil, fmt.Errorf("failed to create GetSlowPostProtectionSetting request: %w", err) } + var result GetSlowPostProtectionSettingResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetSlowPostProtectionSetting request failed: %w", err) + return nil, fmt.Errorf("get slow post protection setting request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) GetSlowPostProtectionSettings(ctx context.Context, params GetSlowPostProtectionSettingsRequest) (*GetSlowPostProtectionSettingsResponse, error) { @@ -183,8 +180,6 @@ func (p *appsec) GetSlowPostProtectionSettings(ctx context.Context, params GetSl return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetSlowPostProtectionSettingsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/slow-post", params.ConfigID, @@ -196,17 +191,16 @@ func (p *appsec) GetSlowPostProtectionSettings(ctx context.Context, params GetSl return nil, fmt.Errorf("failed to create GetSlowPostProtectionSettings request: %w", err) } + var result GetSlowPostProtectionSettingsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetSlowPostProtectionSettings request failed: %w", err) + return nil, fmt.Errorf("get slow post protection settings request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) UpdateSlowPostProtectionSetting(ctx context.Context, params UpdateSlowPostProtectionSettingRequest) (*UpdateSlowPostProtectionSettingResponse, error) { @@ -232,9 +226,8 @@ func (p *appsec) UpdateSlowPostProtectionSetting(ctx context.Context, params Upd var result UpdateSlowPostProtectionSettingResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateSlowPostProtectionSetting request failed: %w", err) + return nil, fmt.Errorf("update slow post protection setting request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/slowpost_protection.go b/pkg/appsec/slowpost_protection.go index 718c595f..4f8cde47 100644 --- a/pkg/appsec/slowpost_protection.go +++ b/pkg/appsec/slowpost_protection.go @@ -101,8 +101,6 @@ func (p *appsec) GetSlowPostProtection(ctx context.Context, params GetSlowPostPr return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetSlowPostProtectionResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/protections", params.ConfigID, @@ -114,17 +112,16 @@ func (p *appsec) GetSlowPostProtection(ctx context.Context, params GetSlowPostPr return nil, fmt.Errorf("failed to create GetSlowPostProtection request: %w", err) } + var result GetSlowPostProtectionResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetSlowPostProtection request failed: %w", err) + return nil, fmt.Errorf("get slow post protection request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) GetSlowPostProtections(ctx context.Context, params GetSlowPostProtectionsRequest) (*GetSlowPostProtectionsResponse, error) { @@ -135,8 +132,6 @@ func (p *appsec) GetSlowPostProtections(ctx context.Context, params GetSlowPostP return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetSlowPostProtectionsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/protections", params.ConfigID, @@ -148,17 +143,16 @@ func (p *appsec) GetSlowPostProtections(ctx context.Context, params GetSlowPostP return nil, fmt.Errorf("failed to create GetSlowPostProtections request: %w", err) } + var result GetSlowPostProtectionsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetSlowPostProtections request failed: %w", err) + return nil, fmt.Errorf("get slow post protections request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) UpdateSlowPostProtection(ctx context.Context, params UpdateSlowPostProtectionRequest) (*UpdateSlowPostProtectionResponse, error) { @@ -184,9 +178,8 @@ func (p *appsec) UpdateSlowPostProtection(ctx context.Context, params UpdateSlow var result UpdateSlowPostProtectionResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateSlowPostProtection request failed: %w", err) + return nil, fmt.Errorf("update slow post protection request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/threat_intel.go b/pkg/appsec/threat_intel.go index 002029b5..8c0de80b 100644 --- a/pkg/appsec/threat_intel.go +++ b/pkg/appsec/threat_intel.go @@ -72,8 +72,6 @@ func (p *appsec) GetThreatIntel(ctx context.Context, params GetThreatIntelReques return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetThreatIntelResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/threat-intel", params.ConfigID, @@ -84,18 +82,17 @@ func (p *appsec) GetThreatIntel(ctx context.Context, params GetThreatIntelReques if err != nil { return nil, fmt.Errorf("failed to create GetThreatIntel request: %w", err) } - logger.Debugf("BEFORE GetThreatIntel %v", result) + + var result GetThreatIntelResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetThreatIntel request failed: %w", err) + return nil, fmt.Errorf("get threat intel request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } - logger.Debugf("GetThreatIntel %v", result) - return &result, nil + return &result, nil } func (p *appsec) UpdateThreatIntel(ctx context.Context, params UpdateThreatIntelRequest) (*UpdateThreatIntelResponse, error) { @@ -121,9 +118,8 @@ func (p *appsec) UpdateThreatIntel(ctx context.Context, params UpdateThreatIntel var result UpdateThreatIntelResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateThreatIntel request failed: %w", err) + return nil, fmt.Errorf("update threat intel request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/tuning_recommendations.go b/pkg/appsec/tuning_recommendations.go index 51e89e71..62644f3e 100644 --- a/pkg/appsec/tuning_recommendations.go +++ b/pkg/appsec/tuning_recommendations.go @@ -128,8 +128,6 @@ func (p *appsec) GetTuningRecommendations(ctx context.Context, params GetTuningR return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetTuningRecommendationsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/recommendations?standardException=true&type=%s", params.ConfigID, @@ -141,20 +139,18 @@ func (p *appsec) GetTuningRecommendations(ctx context.Context, params GetTuningR if err != nil { return nil, fmt.Errorf("failed to create GetTuningRecommendations request: %w", err) } - req.Header.Set("Content-Type", "application/json") + var result GetTuningRecommendationsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetTuningRecommendations request failed: %w", err) + return nil, fmt.Errorf("get tuning recommendations request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) GetAttackGroupRecommendations(ctx context.Context, params GetAttackGroupRecommendationsRequest) (*GetAttackGroupRecommendationsResponse, error) { @@ -165,8 +161,6 @@ func (p *appsec) GetAttackGroupRecommendations(ctx context.Context, params GetAt return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetAttackGroupRecommendationsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/recommendations/attack-groups/%s?standardException=true&type=%s", params.ConfigID, @@ -183,17 +177,16 @@ func (p *appsec) GetAttackGroupRecommendations(ctx context.Context, params GetAt req.Header.Set("Content-Type", "application/json") + var result GetAttackGroupRecommendationsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetAttackGroupRecommendations request failed: %w", err) + return nil, fmt.Errorf("get attack group recommendations request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) GetRuleRecommendations(ctx context.Context, params GetRuleRecommendationsRequest) (*GetRuleRecommendationsResponse, error) { @@ -204,8 +197,6 @@ func (p *appsec) GetRuleRecommendations(ctx context.Context, params GetRuleRecom return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetRuleRecommendationsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/recommendations/rules/%d?standardException=true&type=%s", params.ConfigID, @@ -222,15 +213,14 @@ func (p *appsec) GetRuleRecommendations(ctx context.Context, params GetRuleRecom req.Header.Set("Content-Type", "application/json") + var result GetRuleRecommendationsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetRuleRecommendations request failed: %w", err) + return nil, fmt.Errorf("get rule recommendations request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } diff --git a/pkg/appsec/version_notes.go b/pkg/appsec/version_notes.go index ecabf720..f9f951e0 100644 --- a/pkg/appsec/version_notes.go +++ b/pkg/appsec/version_notes.go @@ -69,8 +69,6 @@ func (p *appsec) GetVersionNotes(ctx context.Context, params GetVersionNotesRequ return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetVersionNotesResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/version-notes", params.ConfigID, @@ -82,17 +80,16 @@ func (p *appsec) GetVersionNotes(ctx context.Context, params GetVersionNotesRequ return nil, fmt.Errorf("failed to create GetVersionNotes request: %w", err) } + var result GetVersionNotesResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetVersionNotes request failed: %w", err) + return nil, fmt.Errorf("get version notes request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) UpdateVersionNotes(ctx context.Context, params UpdateVersionNotesRequest) (*UpdateVersionNotesResponse, error) { @@ -117,9 +114,8 @@ func (p *appsec) UpdateVersionNotes(ctx context.Context, params UpdateVersionNot var result UpdateVersionNotesResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateVersionNotes request failed: %w", err) + return nil, fmt.Errorf("update version notes request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/waf_mode.go b/pkg/appsec/waf_mode.go index 133ba8bd..cbf051da 100644 --- a/pkg/appsec/waf_mode.go +++ b/pkg/appsec/waf_mode.go @@ -118,8 +118,6 @@ func (p *appsec) GetWAFMode(ctx context.Context, params GetWAFModeRequest) (*Get return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetWAFModeResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/mode", params.ConfigID, @@ -131,17 +129,16 @@ func (p *appsec) GetWAFMode(ctx context.Context, params GetWAFModeRequest) (*Get return nil, fmt.Errorf("failed to create GetWAFMode request: %w", err) } + var result GetWAFModeResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetWAFMode request failed: %w", err) + return nil, fmt.Errorf("get WAF mode request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } // Deprecated: this method will be removed in a future release. @@ -153,8 +150,6 @@ func (p *appsec) GetWAFModes(ctx context.Context, params GetWAFModesRequest) (*G return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetWAFModesResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/mode", params.ConfigID, @@ -166,17 +161,16 @@ func (p *appsec) GetWAFModes(ctx context.Context, params GetWAFModesRequest) (*G return nil, fmt.Errorf("failed to create GetWAFModes request: %w", err) } + var result GetWAFModesResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetWAFModes request failed: %w", err) + return nil, fmt.Errorf("get WAF Modes request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) UpdateWAFMode(ctx context.Context, params UpdateWAFModeRequest) (*UpdateWAFModeResponse, error) { @@ -202,9 +196,8 @@ func (p *appsec) UpdateWAFMode(ctx context.Context, params UpdateWAFModeRequest) var result UpdateWAFModeResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateWAFMode request failed: %w", err) + return nil, fmt.Errorf("update WAF mode request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/waf_protection.go b/pkg/appsec/waf_protection.go index e7cf3f3b..c8440c78 100644 --- a/pkg/appsec/waf_protection.go +++ b/pkg/appsec/waf_protection.go @@ -101,8 +101,6 @@ func (p *appsec) GetWAFProtection(ctx context.Context, params GetWAFProtectionRe return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetWAFProtectionResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/protections", params.ConfigID, @@ -114,17 +112,16 @@ func (p *appsec) GetWAFProtection(ctx context.Context, params GetWAFProtectionRe return nil, fmt.Errorf("failed to create GetWAFProtection request: %w", err) } + var result GetWAFProtectionResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetWAFProtection request failed: %w", err) + return nil, fmt.Errorf("get WAF protection request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) GetWAFProtections(ctx context.Context, params GetWAFProtectionsRequest) (*GetWAFProtectionsResponse, error) { @@ -135,8 +132,6 @@ func (p *appsec) GetWAFProtections(ctx context.Context, params GetWAFProtections return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetWAFProtectionsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/protections", params.ConfigID, @@ -148,17 +143,16 @@ func (p *appsec) GetWAFProtections(ctx context.Context, params GetWAFProtections return nil, fmt.Errorf("failed to create GetWAFProtections request: %w", err) } + var result GetWAFProtectionsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetWAFProtections request failed: %w", err) + return nil, fmt.Errorf("get WAF protections request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) UpdateWAFProtection(ctx context.Context, params UpdateWAFProtectionRequest) (*UpdateWAFProtectionResponse, error) { @@ -184,9 +178,8 @@ func (p *appsec) UpdateWAFProtection(ctx context.Context, params UpdateWAFProtec var result UpdateWAFProtectionResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateWAFProtection request failed: %w", err) + return nil, fmt.Errorf("update WAF protection request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/wap_bypass_network_lists.go b/pkg/appsec/wap_bypass_network_lists.go index 984cc39c..eba4510f 100644 --- a/pkg/appsec/wap_bypass_network_lists.go +++ b/pkg/appsec/wap_bypass_network_lists.go @@ -119,14 +119,12 @@ func (v RemoveWAPBypassNetworkListsRequest) Validate() error { func (p *appsec) GetWAPBypassNetworkLists(ctx context.Context, params GetWAPBypassNetworkListsRequest) (*GetWAPBypassNetworkListsResponse, error) { logger := p.Log(ctx) - logger.Debugf("GetWAPBypassNetworkLists(%+v)", params) + logger.Debugf("GetWAPBypassNetworkLists") if err := params.Validate(); err != nil { return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetWAPBypassNetworkListsResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/bypass-network-lists", params.ConfigID, @@ -139,22 +137,21 @@ func (p *appsec) GetWAPBypassNetworkLists(ctx context.Context, params GetWAPBypa return nil, fmt.Errorf("failed to create GetWAPBypassNetworkLists request: %w", err) } + var result GetWAPBypassNetworkListsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetWAPBypassNetworkLists request failed: %w", err) + return nil, fmt.Errorf("get WAP bypass network lists request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } return &result, nil - } func (p *appsec) UpdateWAPBypassNetworkLists(ctx context.Context, params UpdateWAPBypassNetworkListsRequest) (*UpdateWAPBypassNetworkListsResponse, error) { logger := p.Log(ctx) - logger.Debugf("UpdateWAPBypassNetworkLists(%+v)", params) + logger.Debugf("UpdateWAPBypassNetworkLists") if err := params.Validate(); err != nil { return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) @@ -175,9 +172,8 @@ func (p *appsec) UpdateWAPBypassNetworkLists(ctx context.Context, params UpdateW var result UpdateWAPBypassNetworkListsResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateWAPBypassNetworkLists request failed: %w", err) + return nil, fmt.Errorf("update WAP bypass network lists request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } @@ -188,7 +184,7 @@ func (p *appsec) UpdateWAPBypassNetworkLists(ctx context.Context, params UpdateW // Deprecated: this method will be removed in a future release. func (p *appsec) RemoveWAPBypassNetworkLists(ctx context.Context, params RemoveWAPBypassNetworkListsRequest) (*RemoveWAPBypassNetworkListsResponse, error) { logger := p.Log(ctx) - logger.Debugf("RemoveWAPBypassNetworkLists(%+v)", params) + logger.Debugf("RemoveWAPBypassNetworkLists") if err := params.Validate(); err != nil { return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) @@ -209,9 +205,8 @@ func (p *appsec) RemoveWAPBypassNetworkLists(ctx context.Context, params RemoveW var result RemoveWAPBypassNetworkListsResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("RemoveWAPBypassNetworkLists request failed: %w", err) + return nil, fmt.Errorf("remove WAP bypass network lists request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } diff --git a/pkg/appsec/wap_selected_hostnames.go b/pkg/appsec/wap_selected_hostnames.go index d0181faa..c339b1be 100644 --- a/pkg/appsec/wap_selected_hostnames.go +++ b/pkg/appsec/wap_selected_hostnames.go @@ -71,8 +71,6 @@ func (p *appsec) GetWAPSelectedHostnames(ctx context.Context, params GetWAPSelec return nil, fmt.Errorf("%w: %s", ErrStructValidation, err.Error()) } - var result GetWAPSelectedHostnamesResponse - uri := fmt.Sprintf( "/appsec/v1/configs/%d/versions/%d/security-policies/%s/wap-selected-hostnames", params.ConfigID, @@ -84,11 +82,11 @@ func (p *appsec) GetWAPSelectedHostnames(ctx context.Context, params GetWAPSelec return nil, fmt.Errorf("failed to create GetWAPSelectedHostnames request: %w", err) } + var result GetWAPSelectedHostnamesResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("GetWAPSelectedHostnames request failed: %w", err) + return nil, fmt.Errorf("get WAP selected hostnames request failed: %w", err) } - if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) } @@ -119,9 +117,8 @@ func (p *appsec) UpdateWAPSelectedHostnames(ctx context.Context, params UpdateWA var result UpdateWAPSelectedHostnamesResponse resp, err := p.Exec(req, &result, params) if err != nil { - return nil, fmt.Errorf("UpdateWAPSelectedHostnames request failed: %w", err) + return nil, fmt.Errorf("update WAP selected hostnames request failed: %w", err) } - if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { return nil, p.Error(resp) } From 53ff9771aaa405cd2dcf5ce3c7188a671b1351a2 Mon Sep 17 00:00:00 2001 From: James Lodine Date: Fri, 7 Oct 2022 14:22:45 +0000 Subject: [PATCH 11/12] SECKSD-16535 Pass correct network lists in ip_geo "allow" mode Merge in DEVEXP/akamaiopen-edgegrid-golang from feature/SECKSD-16535 to feature/sp-security-v2-october-2022 --- pkg/appsec/export_configuration.go | 19 +------ pkg/appsec/ip_geo.go | 80 ++++++++++++------------------ 2 files changed, 33 insertions(+), 66 deletions(-) diff --git a/pkg/appsec/export_configuration.go b/pkg/appsec/export_configuration.go index 77ca8389..ab7feeee 100644 --- a/pkg/appsec/export_configuration.go +++ b/pkg/appsec/export_configuration.go @@ -221,22 +221,7 @@ type ( } `json:"clientReputation"` RatePolicyActions *SecurityPoliciesRatePolicyActions `json:"ratePolicyActions,omitempty"` MalwarePolicyActions []MalwarePolicyActionBody `json:"malwarePolicyActions,omitempty"` - IPGeoFirewall struct { - Block string `json:"block"` - GeoControls struct { - BlockedIPNetworkLists struct { - NetworkList []string `json:"networkList,omitempty"` - } `json:"blockedIPNetworkLists"` - } `json:"geoControls"` - IPControls struct { - AllowedIPNetworkLists struct { - NetworkList []string `json:"networkList,omitempty"` - } `json:"allowedIPNetworkLists"` - BlockedIPNetworkLists struct { - NetworkList []string `json:"networkList,omitempty"` - } `json:"blockedIPNetworkLists"` - } `json:"ipControls"` - } `json:"ipGeoFirewall,omitempty"` + IPGeoFirewall *IPGeoFirewall `json:"ipGeoFirewall,omitempty"` PenaltyBox *SecurityPoliciesPenaltyBox `json:"penaltyBox,omitempty"` EvaluationPenaltyBox *SecurityPoliciesPenaltyBox `json:"evaluationPenaltyBox,omitempty"` SlowPost *SlowPostexp `json:"slowPost,omitempty"` @@ -499,7 +484,7 @@ type ( AllExtensions bool `json:"allExtensions"` EnableAppLayer bool `json:"enableAppLayer"` EnableRateControls bool `json:"enableRateControls"` - Extensions []string `json:"extensions"` + Extensions []string `json:"extensions,omitempty"` } `json:"prefetch"` PragmaHeader *GetAdvancedSettingsPragmaResponse `json:"pragmaHeader,omitempty"` } diff --git a/pkg/appsec/ip_geo.go b/pkg/appsec/ip_geo.go index 446acf26..8bd3967a 100644 --- a/pkg/appsec/ip_geo.go +++ b/pkg/appsec/ip_geo.go @@ -28,62 +28,44 @@ type ( PolicyID string `json:"-"` } - // GetIPGeoResponse is returned from a call to GetIpGeo. - GetIPGeoResponse struct { - Block string `json:"block,omitempty"` - GeoControls struct { - BlockedIPNetworkLists struct { - NetworkList []string `json:"networkList,omitempty"` - } `json:"blockedIPNetworkLists,omitempty"` - } `json:"geoControls,omitempty"` - IPControls struct { - AllowedIPNetworkLists struct { - NetworkList []string `json:"networkList,omitempty"` - } `json:"allowedIPNetworkLists,omitempty"` - BlockedIPNetworkLists struct { - NetworkList []string `json:"networkList,omitempty"` - } `json:"blockedIPNetworkLists,omitempty"` - } `json:"ipControls,omitempty"` + // IPGeoNetworkLists is used to specify IP or GEO network lists to be blocked or allowed. + IPGeoNetworkLists struct { + NetworkList []string `json:"networkList,omitempty"` + } + + // IPGeoGeoControls is used to specify GEO network lists to be blocked. + IPGeoGeoControls struct { + BlockedIPNetworkLists *IPGeoNetworkLists `json:"blockedIPNetworkLists,omitempty"` + } + + // IPGeoIPControls is used to specify IP or GEO network lists to be blocked or allowed. + IPGeoIPControls struct { + AllowedIPNetworkLists *IPGeoNetworkLists `json:"allowedIPNetworkLists,omitempty"` + BlockedIPNetworkLists *IPGeoNetworkLists `json:"blockedIPNetworkLists,omitempty"` } // UpdateIPGeoRequest is used to update the method and which network lists are used for IP/Geo firewall blocking. UpdateIPGeoRequest struct { - ConfigID int `json:"-"` - Version int `json:"-"` - PolicyID string `json:"-"` - Block string `json:"block"` - GeoControls struct { - BlockedIPNetworkLists struct { - NetworkList []string `json:"networkList"` - } `json:"blockedIPNetworkLists"` - } `json:"geoControls"` - IPControls struct { - AllowedIPNetworkLists struct { - NetworkList []string `json:"networkList"` - } `json:"allowedIPNetworkLists"` - BlockedIPNetworkLists struct { - NetworkList []string `json:"networkList"` - } `json:"blockedIPNetworkLists"` - } `json:"ipControls"` + ConfigID int `json:"-"` + Version int `json:"-"` + PolicyID string `json:"-"` + Block string `json:"block"` + GeoControls *IPGeoGeoControls `json:"geoControls,omitempty"` + IPControls *IPGeoIPControls `json:"ipControls,omitempty"` } - // UpdateIPGeoResponse is returned from a call to UpdateIPGeo. - UpdateIPGeoResponse struct { - Block string `json:"block"` - GeoControls struct { - BlockedIPNetworkLists struct { - NetworkList []string `json:"networkList"` - } `json:"blockedIPNetworkLists"` - } `json:"geoControls"` - IPControls struct { - AllowedIPNetworkLists struct { - NetworkList []string `json:"networkList"` - } `json:"allowedIPNetworkLists"` - BlockedIPNetworkLists struct { - NetworkList []string `json:"networkList"` - } `json:"blockedIPNetworkLists"` - } `json:"ipControls"` + // IPGeoFirewall is used to describe an IP/Geo firewall. + IPGeoFirewall struct { + Block string `json:"block"` + GeoControls *IPGeoGeoControls `json:"geoControls,omitempty"` + IPControls *IPGeoIPControls `json:"ipControls,omitempty"` } + + // GetIPGeoResponse is returned from a call to GetIPGeo + GetIPGeoResponse IPGeoFirewall + + // UpdateIPGeoResponse is returned from a call to UpdateIPGeo + UpdateIPGeoResponse IPGeoFirewall ) // Validate validates a GetIPGeoRequest. From e1e0a4e0d35f43272e4d06b44db66d227cafc056 Mon Sep 17 00:00:00 2001 From: Michal Wojcik Date: Thu, 20 Oct 2022 08:45:17 +0200 Subject: [PATCH 12/12] SECKSD-16552 fix typos --- pkg/appsec/configuration_version.go | 2 +- pkg/appsec/custom_deny.go | 2 +- pkg/appsec/waf_mode.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/appsec/configuration_version.go b/pkg/appsec/configuration_version.go index 8a3e4b17..cf891649 100644 --- a/pkg/appsec/configuration_version.go +++ b/pkg/appsec/configuration_version.go @@ -59,7 +59,7 @@ func (p *appsec) GetConfigurationVersions(ctx context.Context, params GetConfigu var result GetConfigurationVersionsResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("get configuration cersions request failed: %w", err) + return nil, fmt.Errorf("get configuration versions request failed: %w", err) } if resp.StatusCode != http.StatusOK { return nil, p.Error(resp) diff --git a/pkg/appsec/custom_deny.go b/pkg/appsec/custom_deny.go index 52d9d950..6f281adc 100644 --- a/pkg/appsec/custom_deny.go +++ b/pkg/appsec/custom_deny.go @@ -237,7 +237,7 @@ func (p *appsec) GetCustomDenyList(ctx context.Context, params GetCustomDenyList req, err := http.NewRequestWithContext(ctx, http.MethodGet, uri, nil) if err != nil { - return nil, fmt.Errorf("failed to create GetlustomDenyList request: %w", err) + return nil, fmt.Errorf("failed to create GetCustomDenyList request: %w", err) } var result GetCustomDenyListResponse diff --git a/pkg/appsec/waf_mode.go b/pkg/appsec/waf_mode.go index cbf051da..7e92184e 100644 --- a/pkg/appsec/waf_mode.go +++ b/pkg/appsec/waf_mode.go @@ -164,7 +164,7 @@ func (p *appsec) GetWAFModes(ctx context.Context, params GetWAFModesRequest) (*G var result GetWAFModesResponse resp, err := p.Exec(req, &result) if err != nil { - return nil, fmt.Errorf("get WAF Modes request failed: %w", err) + return nil, fmt.Errorf("get WAF modes request failed: %w", err) } if resp.StatusCode != http.StatusOK { return nil, p.Error(resp)