Skip to content

Commit

Permalink
clean: Replace scalaj with sttp (#496)
Browse files Browse the repository at this point in the history
  • Loading branch information
lolgab authored Mar 25, 2024
1 parent 5e8b907 commit 9cc735f
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 17 deletions.
34 changes: 18 additions & 16 deletions api-scala/src/main/scala/com/codacy/api/client/CodacyClient.scala
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package com.codacy.api.client

import play.api.libs.json._
import com.codacy.api.util.JsonOps
import scalaj.http.Http
import play.api.libs.json._
import sttp.client3.{HttpURLConnectionBackend, SttpBackendOptions}
import sttp.client3.quick._

import java.net.URL
import scala.util.{Failure, Success, Try}
import scala.concurrent.duration._
import scala.util.control.NonFatal
import scala.util.{Failure, Success, Try}

class CodacyClient(
apiUrl: Option[String] = None,
Expand Down Expand Up @@ -38,24 +40,24 @@ class CodacyClient(
sleepTime: Option[Int],
numRetries: Option[Int]
)(implicit reads: Reads[T]): RequestResponse[T] = {
val url = s"$remoteUrl/${request.endpoint}"
try {
val headers = tokens ++ Map("Content-Type" -> "application/json")
var req = quickRequest
.post(uri"$remoteUrl/${request.endpoint}".withParams(request.queryParameters))
.headers(tokens ++ Map("Content-Type" -> "application/json"))
.body(value)

var options = SttpBackendOptions.Default

val httpRequest = timeoutOpt match {
case Some(timeout) =>
Http(url).timeout(connTimeoutMs = timeout.connTimeoutMs, readTimeoutMs = timeout.readTimeoutMs)
case None => Http(url)
timeoutOpt.foreach { timeout =>
options = options.connectionTimeout(timeout.connTimeoutMs.millis)
req = req.readTimeout(timeout.readTimeoutMs.millis)
}

val body = httpRequest
.params(request.queryParameters)
.headers(headers)
.postData(value)
.asString
.body
val client = simpleHttpClient.withBackend(HttpURLConnectionBackend(options = options))

val response = client.send(req)

parseJsonAs[T](body) match {
parseJsonAs[T](response.body) match {
case failure: FailedResponse =>
retryPost(request, value, timeoutOpt, sleepTime, numRetries.map(x => x - 1), failure.message)
case success => success
Expand Down
2 changes: 1 addition & 1 deletion build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ lazy val apiScala = project
.settings(
libraryDependencies ++= Seq(
"com.typesafe.play" %% "play-json" % "2.8.2",
"org.scalaj" %% "scalaj-http" % "2.4.2",
"com.softwaremill.sttp.client3" %% "core" % "3.9.5",
"org.eclipse.jgit" % "org.eclipse.jgit" % "4.11.9.201909030838-r",
"org.scalatest" %% "scalatest" % "3.0.8" % Test
)
Expand Down

0 comments on commit 9cc735f

Please sign in to comment.