{"id":13566530,"url":"https://github.com/pepegar/hammock","last_synced_at":"2025-04-07T12:08:21.510Z","repository":{"id":38630604,"uuid":"79055657","full_name":"pepegar/hammock","owner":"pepegar","description":"Purely functional HTTP client","archived":false,"fork":false,"pushed_at":"2023-03-02T11:57:17.000Z","size":1537,"stargazers_count":174,"open_issues_count":26,"forks_count":19,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-31T10:06:49.454Z","etag":null,"topics":["cats","fp","http","scala","typelevel"],"latest_commit_sha":null,"homepage":"https://hammock.pepegar.com/","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pepegar.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-01-15T19:53:33.000Z","updated_at":"2025-03-22T11:04:21.000Z","dependencies_parsed_at":"2024-01-19T07:13:13.987Z","dependency_job_id":"92e3e9a4-f041-46f0-bf7a-e5ccbf5d275b","html_url":"https://github.com/pepegar/hammock","commit_stats":null,"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pepegar%2Fhammock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pepegar%2Fhammock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pepegar%2Fhammock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pepegar%2Fhammock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pepegar","download_url":"https://codeload.github.com/pepegar/hammock/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247648977,"owners_count":20972945,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cats","fp","http","scala","typelevel"],"created_at":"2024-08-01T13:02:11.419Z","updated_at":"2025-04-07T12:08:21.486Z","avatar_url":"https://github.com/pepegar.png","language":"Scala","funding_links":[],"categories":["Scala"],"sub_categories":[],"readme":"# Hammock\n\n[![Typelevel incubator](https://img.shields.io/badge/typelevel-incubator-F51C2B.svg)](http://typelevel.org/projects)\n[![Join the chat at https://gitter.im/pepegar/hammock](https://badges.gitter.im/pepegar/hammock.svg)](https://gitter.im/pepegar/hammock?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n[![Build Status](https://travis-ci.org/pepegar/hammock.svg?branch=master)](https://travis-ci.org/pepegar/hammock)\n[![codecov](https://codecov.io/gh/pepegar/hammock/branch/master/graph/badge.svg)](https://codecov.io/gh/pepegar/hammock)\n[![Maven Central](https://img.shields.io/maven-central/v/com.pepegar/hammock-core_2.12.svg)]()\n\nHammock is yet another HTTP client for Scala.  It tries to be typeful,\npurely functional, and work along other technologies that you're\nalready using such as akka-http, circe, or cats.\n\n## Installation\n\nAdd the following to your `build.sbt`.\n\n```scala\n// For Scala 2.10, 2.11, or 2.12\nlibraryDependencies ++= Seq(\n  \"com.pepegar\" %% \"hammock-core\" % \"0.10.0\",\n  \n  // Hammock for standard Scala doesn't ship with a standard implementation\n  \"com.pepegar\" %% \"hammock-apache-http\" % \"0.10.0\"\n)\n\n// For ScalaJS\nlibraryDependencies += \"com.pepegar\" %%% \"hammock-core\" % \"0.10.0\"\n```\n\n\n## Rationale\n\n1. It's easy to use, has a high level API\n2. It's typeful, tries to represent effects at type level.\n3. 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]`.\n4. It has good [documentation][docs].\n5. [It's modular](#modules)\n\n[httpcommons]: http://hc.apache.org/\n[xhr]: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest\n[docs]: http://pepegar.com/hammock\n[circe]: http://circe.io\n[akka-http]: https://doc.akka.io/docs/akka-http/current/scala/http/\n[async-http-client]: https://github.com/asynchttpclient/async-http-client\n\n\n## Modules\n\n| Module name               | Description                                                      | Version |\n| --------------------      | ------------------------------------------                       | ------- |\n| `hammock-core`            | the core functionality of hammock, using [XHR][xhr] in JS        | `0.10.0` |\n| `hammock-circe`           | encode and decode HTTP entities with [Circe][circe]              | `0.10.0` |\n| `hammock-apache-http`     | run your HTTP requests with [Apache HTTP commons][httpcommons]   | `0.10.0` |\n| `hammock-akka-http`       | run your HTTP requests with [akka-http][akka-http]               | `0.10.0` |\n| `hammock-asynchttpclient` | run your HTTP requests with [AsyncHttpClient][async-http-client] | `0.10.0` |\n\n\n## How does Hammock look in action?\n\n```scala\nimport cats.effect.IO\nimport hammock._\nimport hammock.marshalling._\nimport hammock.apache.ApacheInterpreter\nimport hammock.circe.implicits._\n\nobject HttpClient {\n  // Using the Apache HTTP commons interpreter\n  implicit val interpreter = ApacheInterpreter.instance[IO]\n\n  val response = Hammock\n    .request(Method.GET, uri\"https://api.fidesmo.com/apps\", Map()) // In the `request` method, you describe your HTTP request\n    .as[List[String]]\n    .exec[IO]\n}\n```\n\n## Code of conduct\n\nPeople are expected to follow the [Typelevel Code of Conduct](http://typelevel.org/conduct.html) when discussing Hammock on the Github page, Gitter channel, or other venues.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpepegar%2Fhammock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpepegar%2Fhammock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpepegar%2Fhammock/lists"}