-
Notifications
You must be signed in to change notification settings - Fork 327
Closed
Description
I've tried an example from documentation for scribe
import io.circe.Decoder
import sttp.client4.*
import sttp.client4.circe.*
import sttp.client4.logging.*
import sttp.client4.logging.scribe.ScribeLoggingBackend
import sttp.model.{MediaType, Uri}
trait RestClient[F[_]]:
def get[A: Decoder](uri: Uri): F[A]
object RestClient:
def make[F[_]: Sync]: Resource[F, RestClient[F]] =
Resource.pure[F, RestClient[F]](
new RestClient[F]:
private val backend = ScribeLoggingBackend(DefaultSyncBackend())
override def get[A: Decoder](uri: Uri): F[A] =
val result = Sync[F].delay:
basicRequest
.contentType(MediaType.ApplicationJson)
.get(uri)
.response(asJson[A])
.send(backend)
.body
result.flatMap(Sync[F].fromEither(_))
)
getting an error:
[error] 24 | private val backend = ScribeLoggingBackend(DefaultSyncBackend())
[error] | ^^^^^^^^^^^^^^^^^^^^
[error] |Ambiguous overload. The overloaded alternatives of method apply in object ScribeLoggingBackend with types
[error] | [F[_$2]](delegate: sttp.client4.WebSocketBackend[F]): sttp.client4.WebSocketBackend[F]
[error] | [F[_$1]](delegate: sttp.client4.Backend[F]): sttp.client4.Backend[F]
[error] | (delegate: sttp.client4.SyncBackend): sttp.client4.SyncBackend
[error] |all match arguments (sttp.client4.WebSocketSyncBackend)
[error] |
[error] | longer explanation available when compiling with `-explain`
build.sbt:
ThisBuild / scalaVersion := "3.6.4"
lazy val `rest-client` = project
.in(file("rest-client"))
.settings(
scalacOptions ++= Seq(
"-indent",
"-Xmax-inlines",
"64",
"-Wunused:imports",
"-Wconf:id=E198:error"
),
libraryDependencies ++= Seq(
"com.softwaremill.sttp.client4" %% "core" % "4.0.3",
"com.softwaremill.sttp.client4" %% "circe" % "4.0.3",
"com.softwaremill.sttp.client4" %% "scribe-backend" %"4.0.3",
"com.outr" %% "scribe" % "3.16.1",
// and so on
)
)
Metadata
Metadata
Assignees
Labels
No labels