SkillAgentSearch skills...

Hammock

Purely functional HTTP client

Install / Use

/learn @pepegar/Hammock
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Hammock

Typelevel incubator Join the chat at https://gitter.im/pepegar/hammock Build Status codecov Maven Central

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.

Installation

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"

Rationale

  1. It's easy to use, has a high level API
  2. It's typeful, tries to represent effects at type level.
  3. It does not force a specific target context. You can run your computations in any type F[_] that has an instance of cats-effect's Sync[F].
  4. It has good documentation.
  5. It's modular

Modules

| 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 |

How does Hammock look in action?

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]
}

Code of conduct

People are expected to follow the Typelevel Code of Conduct when discussing Hammock on the Github page, Gitter channel, or other venues.

View on GitHub
GitHub Stars176
CategoryDevelopment
Updated11d ago
Forks19

Languages

Scala

Security Score

100/100

Audited on Mar 26, 2026

No findings