diff --git a/CHANGELOG.md b/CHANGELOG.md index f9791da9f..db5102d33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Snyk Security Changelog +## [2.7.21] + +### Fixed +- Append /v1 to the endpoint when necessary + ## [2.7.20] ### Added - (LS OSS) Starts rendering the Tree Nodes for OSS via the LS diff --git a/src/main/kotlin/io/snyk/plugin/SnykPostStartupActivity.kt b/src/main/kotlin/io/snyk/plugin/SnykPostStartupActivity.kt index 8b3845666..51e14bf67 100644 --- a/src/main/kotlin/io/snyk/plugin/SnykPostStartupActivity.kt +++ b/src/main/kotlin/io/snyk/plugin/SnykPostStartupActivity.kt @@ -115,7 +115,7 @@ class SnykPostStartupActivity : ProjectActivity { getKubernetesImageCache(project)?.cacheKubernetesFileFromProject() } - if (settings.scanOnSave && (isSnykCodeLSEnabled() || isSnykOSSLSEnabled() || isSnykIaCLSEnabled())) { + if (!settings.token.isNullOrBlank() && settings.scanOnSave && (isSnykCodeLSEnabled() || isSnykOSSLSEnabled() || isSnykIaCLSEnabled())) { getSnykTaskQueueService(project)?.scan(true) } diff --git a/src/main/kotlin/snyk/common/CustomEndpoints.kt b/src/main/kotlin/snyk/common/CustomEndpoints.kt index eaec4f6db..44009361c 100644 --- a/src/main/kotlin/snyk/common/CustomEndpoints.kt +++ b/src/main/kotlin/snyk/common/CustomEndpoints.kt @@ -21,12 +21,14 @@ fun toSnykCodeApiUrl(endpointUrl: String?): String { uri.isDev() -> endpoint .replace("api.", "") + .replace("/v1", "") .replace("https://dev.", "https://$codeSubdomain.dev.") .suffixIfNot("/") uri.isSnykTenant() -> endpoint .replace("https://api.", "https://") + .replace("/v1", "") .replace("https://", "https://$codeSubdomain.") .suffixIfNot("/") @@ -73,7 +75,8 @@ fun getEndpointUrl(): String { "" } val customEndpointUrl = resolveCustomEndpoint(endpointUrl) - return customEndpointUrl.removeTrailingSlashesIfPresent() + // we need to set v1 here, to make the sast-enabled calls work in LS + return customEndpointUrl.removeTrailingSlashesIfPresent().suffixIfNot("/v1") } fun isSnykCodeAvailable(endpointUrl: String?): Boolean { diff --git a/src/main/kotlin/snyk/common/lsp/LanguageServerWrapper.kt b/src/main/kotlin/snyk/common/lsp/LanguageServerWrapper.kt index e69cdeef8..99b69412d 100644 --- a/src/main/kotlin/snyk/common/lsp/LanguageServerWrapper.kt +++ b/src/main/kotlin/snyk/common/lsp/LanguageServerWrapper.kt @@ -271,7 +271,7 @@ class LanguageServerWrapper( } private fun getFeatureFlagStatusInternal(featureFlag: String): Boolean { - if (!isSnykCodeLSEnabled()) { + if (!(isSnykCodeLSEnabled() || isSnykOSSLSEnabled() || isSnykIaCLSEnabled()) || pluginSettings().token.isNullOrBlank()) { return false } diff --git a/src/test/kotlin/snyk/common/CustomEndpointsTest.kt b/src/test/kotlin/snyk/common/CustomEndpointsTest.kt index f63b9b0a3..7d36f81a8 100644 --- a/src/test/kotlin/snyk/common/CustomEndpointsTest.kt +++ b/src/test/kotlin/snyk/common/CustomEndpointsTest.kt @@ -107,9 +107,11 @@ class CustomEndpointsTest { fun `toSnykCodeApiUrl returns correct deeproxy url for SaaS deployments using api url`() { val apiUrlForProduction = toSnykCodeApiUrl("https://api.eu.snyk.io") val apiUrlForDevelopment = toSnykCodeApiUrl("https://dev.api.eu.snyk.io") + val apiUrlForWithV1 = toSnykCodeApiUrl("https://api.eu.snyk.io/v1") assertEquals("https://deeproxy.eu.snyk.io/", apiUrlForProduction) assertEquals("https://deeproxy.dev.eu.snyk.io/", apiUrlForDevelopment) + assertEquals("https://deeproxy.eu.snyk.io/", apiUrlForWithV1) } @Test