Gigahorse 

Gigahorse は、Scala のための HTTP クライアントで複数のバックエンド実装をサポートする。 内部実装として Apache HTTP HttpAsyncClientAsync Http ClientSquare OkHttpAkka HTTP から選ぶことができる。

セットアップ 

Apache HTTP HttpAsyncClient を使う場合:

libraryDependencies += "com.eed3si9n" %% "gigahorse-apache-http" % "0.7.0"

Async HTTP Client を使う場合:

libraryDependencies += "com.eed3si9n" %% "gigahorse-asynchttpclient" % "0.7.0"

Square OkHttp 3.x を使う場合:

libraryDependencies += "com.eed3si9n" %% "gigahorse-okhttp" % "0.7.0"

Akka HTTP は現段階では実験的サポート:

libraryDependencies += "com.eed3si9n" %% "gigahorse-akka-http" % "0.7.0"

ライブラリ依存性 

  • Gigahorse は一般的に Scala 標準ライブラリと Lightbend SSL Config、そして Lightbend Config に依存している。
  • Gigahorse-Apache-HTTP は、shading された Apache HTTP HttpAsyncClient 2.x に依存している。
  • Gigahorse-AsyncHttpClient は、shading された AHC 2.0 (これは Netty 4 を使っている) に依存している。
  • Gigahorse-OkHttp は、Scala と Square OkHttp に依存する。
  • Gigahorse-Akka-HTTP は現状では実験段階で、実装されていない機能もある。

謝辞 

  • 実装の大半は、AHC の呼び出し方や設定のデフォルト値なども含め The Play WS API をベースとした。 特に設定に関しては Lightbend Config@wsargentSSL Config を採用しており、よりセキュアなデフォルトになっている。
  • API の設計に関しては @n8hanDispatch Reboot に強い影響を受けている。
  • データ型の全ては @Duhemm と僕が作った Contraband を使って自動生成されている。
  • @alexdupre は AHC 2.0 へのマイグレーションと WebSocket サポートをコントリビュートしてくれた。
  • 実際の HTTP の仕事をしている HTTP ライブラリにこの場を借りて感謝したい。

ライセンス 

Apache v2

クイックスタート 

Gigahorse を使った簡単な GET 呼び出しの例をみてみよう:

scala> import gigahorse._, support.apachehttp.Gigahorse
scala> import scala.concurrent._, duration._
scala> val http = Gigahorse.http(Gigahorse.config)
scala> val r = Gigahorse.url("https://api.duckduckgo.com").get.
         addQueryString(
           "q" -> "1 + 1"
         )
scala> val f = http.run(r, Gigahorse.asString andThen {_.take(60)})
scala> Await.result(f, 120.seconds)
scala> http.close()

Gigahorse