Skip to content

Commit 60d9819

Browse files
authored
Update backends up to sttp4 (#891)
1 parent f36b590 commit 60d9819

10 files changed

Lines changed: 29 additions & 28 deletions

File tree

build.sbt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -193,9 +193,9 @@ lazy val client = crossProject(JSPlatform, JVMPlatform)
193193
"com.chuusai" %%% "shapeless" % Versions.Shapeless,
194194
"eu.timepit" %%% "refined" % Versions.Refined,
195195
"org.typelevel" %%% "cats-core" % Versions.Cats,
196-
"com.softwaremill.sttp.client3" %%% "core" % Versions.Sttp,
197-
"com.softwaremill.sttp.client3" %%% "circe" % Versions.Sttp,
198-
"com.softwaremill.sttp.client3" %%% "json-common" % Versions.Sttp,
196+
"com.softwaremill.sttp.client4" %%% "core" % Versions.Sttp,
197+
"com.softwaremill.sttp.client4" %%% "circe" % Versions.Sttp,
198+
"com.softwaremill.sttp.client4" %%% "json-common" % Versions.Sttp,
199199
"com.softwaremill.sttp.model" %%% "core" % Versions.SttpModel,
200200
"com.softwaremill.sttp.shared" %%% "core" % Versions.SttpShared,
201201
"co.fs2" %%% "fs2-core" % Versions.Fs2,
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package com.azavea.stac4s.api.client
22

33
import cats.MonadThrow
4-
import sttp.client3.SttpBackend
4+
import sttp.client4.Backend
55
import sttp.model.Uri
66

77
object SttpStacClient {
88

9-
def apply[F[_]: MonadThrow](client: SttpBackend[F, Any], baseUri: Uri): SttpStacClient[F] =
9+
def apply[F[_]: MonadThrow](client: Backend[F], baseUri: Uri): SttpStacClient[F] =
1010
SttpStacClientF[F, SearchFilters](client, baseUri)
1111
}

modules/client/js/src/test/scala/com/azavea/stac4s/api/client/SttpStacClientSpec.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package com.azavea.stac4s.api.client
22

33
import com.azavea.stac4s.testing.JsInstances
44

5-
import sttp.client3.UriContext
5+
import sttp.client4.UriContext
66

77
class SttpStacClientSpec extends SttpStacClientFSpec[SearchFilters] with JsInstances {
88
lazy val client = SttpStacClient(backend, uri"http://localhost:9090")
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package com.azavea.stac4s.api.client
22

33
import cats.MonadThrow
4-
import sttp.client3.SttpBackend
4+
import sttp.client4.Backend
55
import sttp.model.Uri
66

77
object SttpStacClient {
88

9-
def apply[F[_]: MonadThrow](client: SttpBackend[F, Any], baseUri: Uri): SttpStacClient[F] =
9+
def apply[F[_]: MonadThrow](client: Backend[F], baseUri: Uri): SttpStacClient[F] =
1010
SttpStacClientF[F, SearchFilters](client, baseUri)
1111
}

modules/client/jvm/src/test/scala/com/azavea/stac4s/api/client/SttpStacClientSpec.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package com.azavea.stac4s.api.client
22

33
import com.azavea.stac4s.testing.JvmInstances
44

5-
import sttp.client3.UriContext
5+
import sttp.client4.UriContext
66

77
class SttpStacClientSpec extends SttpStacClientFSpec[SearchFilters] with JvmInstances {
88
lazy val client = SttpStacClient(backend, uri"http://localhost:9090")

modules/client/shared/src/main/scala/com/azavea/stac4s/api/client/SttpStacClientF.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ import eu.timepit.refined.types.string.NonEmptyString
1414
import fs2.Stream
1515
import io.circe.syntax._
1616
import io.circe.{Encoder, Json, JsonObject}
17-
import sttp.client3.circe.asJson
18-
import sttp.client3.{Response, SttpBackend, UriContext, basicRequest}
17+
import sttp.client4.circe.asJson
18+
import sttp.client4.{Backend, Response, UriContext, basicRequest}
1919
import sttp.model.{MediaType, Uri}
2020

2121
case class SttpStacClientF[F[_]: MonadThrow, S: Encoder](
22-
client: SttpBackend[F, Any],
22+
client: Backend[F],
2323
baseUri: Uri
2424
) extends StreamingStacClientF[F, Stream[F, *], S] {
2525
import SttpStacClientF._

modules/client/shared/src/main/scala/com/azavea/stac4s/api/client/util/syntax/package.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,20 @@ package com.azavea.stac4s.api.client.util
33
import com.azavea.stac4s.api.client.ETag
44

55
import eu.timepit.refined.types.string.NonEmptyString
6-
import sttp.client3.{RequestT, Response}
6+
import sttp.client4.{Request, Response}
77
import sttp.model.HeaderNames
88

99
package object syntax {
1010

11-
implicit class RequestTOps[U[_], T, -R](val self: RequestT[U, T, R]) extends AnyVal {
12-
def header(k: String, v: Option[String]): RequestT[U, T, R] = v.fold(self)(self.header(k, _))
11+
implicit class RequestOps[T](val self: Request[T]) extends AnyVal {
12+
def header(k: String, v: Option[String]): Request[T] = v.fold(self)(self.header(k, _))
1313

1414
@SuppressWarnings(Array("UnusedMethodParameter"))
15-
def header(k: String, v: Option[NonEmptyString])(implicit d: DummyImplicit): RequestT[U, T, R] =
15+
def header(k: String, v: Option[NonEmptyString])(implicit d: DummyImplicit): Request[T] =
1616
v.fold(self)(e => self.header(k, e.value))
1717

18-
def headerIfMatch(v: Option[NonEmptyString]): RequestT[U, T, R] = header(HeaderNames.IfMatch, v)
19-
def headerETag(v: Option[NonEmptyString]): RequestT[U, T, R] = header(HeaderNames.Etag, v)
18+
def headerIfMatch(v: Option[NonEmptyString]): Request[T] = header(HeaderNames.IfMatch, v)
19+
def headerETag(v: Option[NonEmptyString]): Request[T] = header(HeaderNames.Etag, v)
2020
}
2121

2222
implicit class ResponseOps[T](val self: Response[T]) extends AnyVal {

modules/client/shared/src/test/scala/com/azavea/stac4s/api/client/SttpStacClientFSpec.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import org.scalacheck.resample._
1111
import org.scalatest.BeforeAndAfterAll
1212
import org.scalatest.funspec.AnyFunSpec
1313
import org.scalatest.matchers.should.Matchers
14-
import sttp.client3.testing.SttpBackendStub
15-
import sttp.client3.{Response, StringBody}
14+
import sttp.client4.testing.BackendStub
15+
import sttp.client4.{Response, StringBody}
1616
import sttp.model.Method
1717
import sttp.monad.EitherMonad
1818

@@ -31,7 +31,7 @@ trait SttpStacClientFSpec[S]
3131

3232
/** We use the default synchronous Either backend to use the same tests set for the Scala JS backend. */
3333
lazy val backend =
34-
SttpBackendStub(EitherMonad)
34+
BackendStub(EitherMonad)
3535
.whenRequestMatches(_.uri.path == Seq("search"))
3636
.thenRespondF { _ => Response.json(arbItemCollectionShort.arbitrary.resample().asJson) }
3737
.whenRequestMatches {

modules/client/shared/src/test/scala/com/azavea/stac4s/api/client/SttpSyntax.scala

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,21 @@ import cats.syntax.either._
44
import cats.syntax.option._
55
import eu.timepit.refined.types.string.NonEmptyString
66
import io.circe.Json
7-
import sttp.client3.Response
7+
import sttp.client4.Response
8+
import sttp.client4.testing.{ResponseStub, StubBody}
89
import sttp.model.{Header, HeaderNames, StatusCode}
910

1011
trait SttpSyntax {
1112

1213
implicit class ResponseOps(self: Response.type) {
1314

14-
def empty: Either[Nothing, Response[Either[Nothing, String]]] = Response.ok("".asRight).asRight
15+
def empty: Either[Nothing, Response[StubBody]] = ResponseStub.exact("".asRight).asRight
1516

16-
def item[T](item: T): Either[Nothing, Response[Either[Nothing, T]]] =
17-
Response(item.asRight, StatusCode.Ok, "OK", Header(HeaderNames.Etag, item.##.toString) :: Nil).asRight
17+
def item[T](item: T): Either[Nothing, Response[StubBody]] =
18+
ResponseStub.exact(item.asRight, StatusCode.Ok, Header(HeaderNames.Etag, item.##.toString) :: Nil).asRight
1819

19-
def json(json: Json): Either[Nothing, Response[Either[Nothing, Json]]] =
20-
Response.ok(json.asRight).asRight
20+
def json(json: Json): Either[Nothing, Response[StubBody]] =
21+
ResponseStub.exact(json.asRight).asRight
2122
}
2223

2324
implicit class EtagOps[T](val self: T) {

project/Versions.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ object Versions {
2727
val Scalatest = "3.2.20"
2828
val Scapegoat = "3.3.6"
2929
val Shapeless = "2.3.13"
30-
val Sttp = "3.11.0"
30+
val Sttp = "4.0.26"
3131
val SttpModel = "1.7.18"
3232
val SttpShared = "1.5.2"
3333
val Fs2 = "3.13.0"

0 commit comments

Comments
 (0)