Purely functional HTTP client
Hammock is yet another HTTP client for Scala. It tries to be typeful, purely functional, and work along other technologies that you're already using such as akka-http, circe, or cats.
Add the following to your build.sbt
.
// For Scala 2.10, 2.11, or 2.12
libraryDependencies ++= Seq(
"com.pepegar" %% "hammock-core" % "0.10.0",
// Hammock for standard Scala doesn't ship with a standard implementation
"com.pepegar" %% "hammock-apache-http" % "0.10.0"
)
// For ScalaJS
libraryDependencies += "com.pepegar" %%% "hammock-core" % "0.10.0"
F[_]
that has an instance of cats-effect's Sync[F]
.Module name | Description | Version |
---|---|---|
hammock-core |
the core functionality of hammock, using XHR in JS | 0.10.0 |
hammock-circe |
encode and decode HTTP entities with Circe | 0.10.0 |
hammock-apache-http |
run your HTTP requests with Apache HTTP commons | 0.10.0 |
hammock-akka-http |
run your HTTP requests with akka-http | 0.10.0 |
hammock-asynchttpclient |
run your HTTP requests with AsyncHttpClient | 0.10.0 |
import cats.effect.IO
import hammock._
import hammock.marshalling._
import hammock.apache.ApacheInterpreter
import hammock.circe.implicits._
object HttpClient {
// Using the Apache HTTP commons interpreter
implicit val interpreter = ApacheInterpreter.instance[IO]
val response = Hammock
.request(Method.GET, uri"https://api.fidesmo.com/apps", Map()) // In the `request` method, you describe your HTTP request
.as[List[String]]
.exec[IO]
}
People are expected to follow the Typelevel Code of Conduct when discussing Hammock on the Github page, Gitter channel, or other venues.