Skip to content

Commit

Permalink
Add item and collection creation endpoints
Browse files Browse the repository at this point in the history
  • Loading branch information
pomadchin committed Dec 23, 2020
1 parent 7630412 commit 31a0bf0
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 16 deletions.
33 changes: 17 additions & 16 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -209,22 +209,23 @@ lazy val client = crossProject(JSPlatform, JVMPlatform)
.settings(publishSettings)
.settings(
libraryDependencies ++= Seq(
"io.circe" %% "circe-core" % Versions.CirceVersion,
"io.circe" %% "circe-generic" % Versions.CirceVersion,
"io.circe" %% "circe-refined" % Versions.CirceVersion,
"com.chuusai" %% "shapeless" % Versions.ShapelessVersion,
"eu.timepit" %% "refined" % Versions.RefinedVersion,
"org.locationtech.geotrellis" %% "geotrellis-vector" % Versions.GeoTrellisVersion,
"org.locationtech.jts" % "jts-core" % Versions.Jts,
"org.typelevel" %% "cats-core" % Versions.CatsVersion,
"co.fs2" %% "fs2-core" % "2.4.2",
"org.http4s" %% "http4s-blaze-client" % "0.21.7",
"org.http4s" %% "http4s-circe" % "0.21.7",
"org.http4s" %% "http4s-client" % "0.21.7",
"org.http4s" %% "http4s-core" % "0.21.7",
"org.typelevel" %% "cats-effect" % "2.1.4",
"io.chrisdavenport" %% "vault" % "2.0.0",
"io.chrisdavenport" %% "log4cats-core" % "1.1.1"
"io.circe" %% "circe-core" % Versions.CirceVersion,
"io.circe" %% "circe-generic" % Versions.CirceVersion,
"io.circe" %% "circe-refined" % Versions.CirceVersion,
"com.chuusai" %% "shapeless" % Versions.ShapelessVersion,
"eu.timepit" %% "refined" % Versions.RefinedVersion,
"org.locationtech.geotrellis" %% "geotrellis-vector" % Versions.GeoTrellisVersion,
"org.locationtech.jts" % "jts-core" % Versions.Jts,
"org.typelevel" %% "cats-core" % Versions.CatsVersion,
"com.softwaremill.sttp.client3" %% "core" % "3.0.0-RC13",
"co.fs2" %% "fs2-core" % "2.4.2",
"org.http4s" %% "http4s-blaze-client" % "0.21.7",
"org.http4s" %% "http4s-circe" % "0.21.7",
"org.http4s" %% "http4s-client" % "0.21.7",
"org.http4s" %% "http4s-core" % "0.21.7",
"org.typelevel" %% "cats-effect" % "2.1.4",
"io.chrisdavenport" %% "vault" % "2.0.0",
"io.chrisdavenport" %% "log4cats-core" % "1.1.1"
)
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import com.azavea.stac4s.{StacCollection, StacItem}
import cats.effect.{ConcurrentEffect, Resource, Sync}
import cats.syntax.apply._
import cats.syntax.either._
import cats.syntax.flatMap._
import cats.syntax.functor._
import eu.timepit.refined.types.string.NonEmptyString
import io.chrisdavenport.log4cats.Logger
Expand Down Expand Up @@ -54,6 +55,26 @@ case class Http4sStacClient[F[_]: Sync: Logger](
client
.expect(getRequest.withUri(baseUri.withPath(s"/collections/$collectionId/items/$itemId")))
.map(_.as[Option[StacItem]].bimap(_ => None, identity).merge)

def itemCreate(collectionId: NonEmptyString, item: StacItem): F[StacItem] =
logger.trace(s"createItem: $collectionId, $item") *>
client
.expect(
postRequest
.withUri(baseUri.withPath(s"/collections/$collectionId/items"))
.withEntity(item.asJson.noSpaces)
)
.flatMap { json => Sync[F].fromEither(json.as[StacItem].leftMap(_.getCause)) }

def collectionCreate(collection: StacCollection): F[StacCollection] =
logger.trace(s"createCollection: $collection") *>
client
.expect(
postRequest
.withUri(baseUri.withPath(s"/collections/"))
.withEntity(collection.asJson.noSpaces)
)
.flatMap { json => Sync[F].fromEither(json.as[StacCollection].leftMap(_.getCause)) }
}

object Http4sStacClient {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,6 @@ trait StacClient[F[_]] {
def collection(collectionId: NonEmptyString): F[Option[StacCollection]]
def items(collectionId: NonEmptyString): F[List[StacItem]]
def item(collectionId: NonEmptyString, itemId: NonEmptyString): F[Option[StacItem]]
def itemCreate(collectionId: NonEmptyString, item: StacItem): F[StacItem]
def collectionCreate(collection: StacCollection): F[StacCollection]
}

0 comments on commit 31a0bf0

Please sign in to comment.