Skip to content

Commit 78da4d8

Browse files
authored
Merge pull request #516 from codacy/add-skip-ssl-flag
[TCE-1203] Add Skip SSL Flag
2 parents 88b1d75 + 051044f commit 78da4d8

7 files changed

Lines changed: 28 additions & 9 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ Usage: codacy-coverage-reporter report
4343
--coverage-reports | -r <your project coverage file name (supports globs)>
4444
--partial <if the report is partial>
4545
--prefix <the project path prefix>
46+
--skip-ssl-verification` [default: false] - Skip the SSL certificate verification when communicating with the Codacy API
4647
--force-coverage-parser <your coverage parser>
4748
Available parsers are: opencover,clover,lcov,phpunit,jacoco,dotcover,cobertura,go
4849

api-scala/src/main/scala/com/codacy/api/client/CodacyClient.scala

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package com.codacy.api.client
22

33
import play.api.libs.json._
44
import com.codacy.api.util.JsonOps
5-
import scalaj.http.Http
5+
import scalaj.http.{Http, HttpOptions}
66

77
import java.net.URL
88
import scala.util.{Failure, Success, Try}
@@ -11,7 +11,8 @@ import scala.util.control.NonFatal
1111
class CodacyClient(
1212
apiUrl: Option[String] = None,
1313
apiToken: Option[String] = None,
14-
projectToken: Option[String] = None
14+
projectToken: Option[String] = None,
15+
allowUnsafeSSL: Boolean = false
1516
) {
1617

1718
private case class ErrorJson(error: String)
@@ -28,6 +29,8 @@ class CodacyClient(
2829

2930
private val remoteUrl = new URL(new URL(apiUrl.getOrElse("https://api.codacy.com")), "/2.0").toString()
3031

32+
private def httpOptions = if (allowUnsafeSSL) Seq(HttpOptions.allowUnsafeSSL) else Seq.empty
33+
3134
/*
3235
* Does an API post
3336
*/
@@ -44,8 +47,10 @@ class CodacyClient(
4447

4548
val httpRequest = timeoutOpt match {
4649
case Some(timeout) =>
47-
Http(url).timeout(connTimeoutMs = timeout.connTimeoutMs, readTimeoutMs = timeout.readTimeoutMs)
48-
case None => Http(url)
50+
Http(url)
51+
.timeout(connTimeoutMs = timeout.connTimeoutMs, readTimeoutMs = timeout.readTimeoutMs)
52+
.options(httpOptions)
53+
case None => Http(url).options(httpOptions)
4954
}
5055

5156
val body = httpRequest

src/main/scala/com/codacy/configuration/parser/ConfigurationParser.scala

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,15 @@ case class BaseCommandConfig(
112112
@Name("s") @ValueDescription("skip if token isn't defined")
113113
skip: Int @@ Counter = Tag.of(0),
114114
@Hidden
115-
debug: Int @@ Counter = Tag.of(0)
115+
debug: Int @@ Counter = Tag.of(0),
116+
@ExtraName("i") @ValueDescription(
117+
"[default: false] - Skip the SSL certificate verification when communicating with the Codacy API"
118+
)
119+
skipSslVerification: Int @@ Counter = Tag.of(0)
116120
) {
117121
val skipValue: Boolean = skip.## > 0
118122
val debugValue: Boolean = debug.## > 0
123+
val skipSslVerificationValue: Boolean = skipSslVerification.## > 0
119124
}
120125

121126
object ConfigArgumentParsers {

src/main/scala/com/codacy/di/Components.scala

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,12 @@ class Components(private val validatedConfig: Configuration) {
1616
(None, Some(apiToken))
1717
}
1818

19-
lazy val codacyClient = new CodacyClient(Some(validatedConfig.baseConfig.codacyApiBaseUrl), apiToken, projectToken)
19+
lazy val codacyClient = new CodacyClient(
20+
Some(validatedConfig.baseConfig.codacyApiBaseUrl),
21+
apiToken,
22+
projectToken,
23+
validatedConfig.baseConfig.skipSslVerification
24+
)
2025

2126
lazy val coverageServices = new CoverageServices(codacyClient)
2227

src/main/scala/com/codacy/model/configuration/Configuration.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ case class BaseConfig(
4444
debug: Boolean,
4545
timeout: RequestTimeout,
4646
sleepTime: Int,
47-
numRetries: Int
47+
numRetries: Int,
48+
skipSslVerification: Boolean
4849
)
4950

5051
sealed trait CommitUUID extends Any {

src/main/scala/com/codacy/rules/ConfigurationRules.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,8 @@ class ConfigurationRules(cmdConfig: CommandConfiguration, envVars: Map[String, S
7474
baseConfig.debugValue,
7575
timeout = RequestTimeout(connTimeoutMs = 1000, readTimeoutMs = baseConfig.httpTimeout),
7676
baseConfig.sleepTime,
77-
baseConfig.numRetries
77+
baseConfig.numRetries,
78+
baseConfig.skipSslVerificationValue
7879
)
7980
validatedConfig <- validateBaseConfigUrl(baseConf)
8081
} yield {

src/test/scala/com/codacy/rules/ReportRulesSpec.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ class ReportRulesSpec extends AnyWordSpec with Matchers with PrivateMethodTester
4141
debug = false,
4242
timeout = RequestTimeout(1000, 10000),
4343
sleepTime = 10000,
44-
numRetries = 3
44+
numRetries = 3,
45+
skipSslVerification = false
4546
)
4647

4748
def assertCodacyCoverage(

0 commit comments

Comments
 (0)