diff --git a/modules/client/js/src/main/scala/com/azavea/stac4s/api/client/StacClient.scala b/modules/client/js/src/main/scala/com/azavea/stac4s/api/client/StacClient.scala index c4b1a724..c863b450 100644 --- a/modules/client/js/src/main/scala/com/azavea/stac4s/api/client/StacClient.scala +++ b/modules/client/js/src/main/scala/com/azavea/stac4s/api/client/StacClient.scala @@ -1,3 +1,4 @@ package com.azavea.stac4s.api.client -trait StacClient[F[_]] extends StacClientF[F, SearchFilters] +trait StacClient[F[_]] extends StacClientF[F, SearchFilters] +trait StreamingStacClient[F[_], G[_]] extends StreamingStacClientF[F, G, SearchFilters] diff --git a/modules/client/jvm/src/main/scala/com/azavea/stac4s/api/client/StacClient.scala b/modules/client/jvm/src/main/scala/com/azavea/stac4s/api/client/StacClient.scala index c4b1a724..c863b450 100644 --- a/modules/client/jvm/src/main/scala/com/azavea/stac4s/api/client/StacClient.scala +++ b/modules/client/jvm/src/main/scala/com/azavea/stac4s/api/client/StacClient.scala @@ -1,3 +1,4 @@ package com.azavea.stac4s.api.client -trait StacClient[F[_]] extends StacClientF[F, SearchFilters] +trait StacClient[F[_]] extends StacClientF[F, SearchFilters] +trait StreamingStacClient[F[_], G[_]] extends StreamingStacClientF[F, G, SearchFilters] diff --git a/modules/client/shared/src/main/scala/com/azavea/stac4s/api/client/StacClientF.scala b/modules/client/shared/src/main/scala/com/azavea/stac4s/api/client/StacClientF.scala index c148e41f..3967d84d 100644 --- a/modules/client/shared/src/main/scala/com/azavea/stac4s/api/client/StacClientF.scala +++ b/modules/client/shared/src/main/scala/com/azavea/stac4s/api/client/StacClientF.scala @@ -3,15 +3,17 @@ package com.azavea.stac4s.api.client import com.azavea.stac4s._ import eu.timepit.refined.types.string.NonEmptyString -import fs2.Stream trait StacClientF[F[_], S] { - def search: Stream[F, StacItem] - def search(filter: S): Stream[F, StacItem] - def collections: Stream[F, StacCollection] def collection(collectionId: NonEmptyString): F[StacCollection] - def items(collectionId: NonEmptyString): Stream[F, StacItem] def item(collectionId: NonEmptyString, itemId: NonEmptyString): F[StacItem] def itemCreate(collectionId: NonEmptyString, item: StacItem): F[StacItem] def collectionCreate(collection: StacCollection): F[StacCollection] } + +trait StreamingStacClientF[F[_], G[_], S] extends StacClientF[F, S] { + def search: G[StacItem] + def search(filter: S): G[StacItem] + def collections: G[StacCollection] + def items(collectionId: NonEmptyString): G[StacItem] +} diff --git a/modules/client/shared/src/main/scala/com/azavea/stac4s/api/client/SttpStacClientF.scala b/modules/client/shared/src/main/scala/com/azavea/stac4s/api/client/SttpStacClientF.scala index b5328af0..12948197 100644 --- a/modules/client/shared/src/main/scala/com/azavea/stac4s/api/client/SttpStacClientF.scala +++ b/modules/client/shared/src/main/scala/com/azavea/stac4s/api/client/SttpStacClientF.scala @@ -19,7 +19,7 @@ import sttp.model.Uri case class SttpStacClientF[F[_]: MonadThrow, S: Encoder]( client: SttpBackend[F, Any], baseUri: Uri -) extends StacClientF[F, S] { +) extends StreamingStacClientF[F, Stream[F, *], S] { /** Get the next page [[Uri]] from the received [[Json]] body. */ private def getNextLink(body: Either[ResponseException[String, circe.Error], Json]): F[Option[Uri]] = diff --git a/project/Versions.scala b/project/Versions.scala index 5a675a90..9b352ed3 100644 --- a/project/Versions.scala +++ b/project/Versions.scala @@ -25,9 +25,9 @@ object Versions { val Scapegoat = "1.4.8" val Shapeless = "2.3.6" val SpdxChecker = "1.0.0" - val Sttp = "3.2.3" - val SttpModel = "1.4.4" - val SttpShared = "1.2.2" + val Sttp = "3.3.4" + val SttpModel = "1.4.7" + val SttpShared = "1.2.5" val Fs2 = "2.5.6" val ThreeTenExtra = "1.6.0" }