Gigahorse 0.3.0

Gigahorse 0.3.0 をリリースした。Gigahorse が何かはドキュメンテーションをみてほしい。

OkHttp サポート

0.3.0 は Square OkHttp サポートを追加する。 Gigahorse-OkHttp は Scala 2.10, 2.11, 2.12 向けにクロスビルドされている。

JavaDoc によると、OkHttpClient のインスタンスは close しなくてもいいらしい。

scala> import gigahorse._, support.okhttp.Gigahorse
import gigahorse._
import support.okhttp.Gigahorse
 
scala> import scala.concurrent._, duration._
import scala.concurrent._
import duration._
 
scala> val http = Gigahorse.http(Gigahorse.config) // don't have to close
http: gigahorse.HttpClient = gigahorse.support.okhttp.OkhClient@23b48158

ただし、レスポンスオブジェクトのボディコンテンツを消費しない場合は必ず close する必要がある。
通常はボディコンテンツは Gigahorse.asString などのメソッドで消費される。
そういう意味では Akka HTTP の設計に似ているかもしれない。

scala> val r = Gigahorse.url("http://api.duckduckgo.com").get.
     |           addQueryString(
     |             "q" -> "1 + 1",
     |             "format" -> "json"
     |           )
r: gigahorse.Request = Request(http://api.duckduckgo.com, GET, EmptyBody(), Map(), Map(q -> List(1 + 1), format -> List(json)), None, None, None, None, None, None)
 
scala> val f = http.run(r, { res: FullResponse =>
     |   res.close() // must close if you don't consume the body
     |   1
     | })
f: scala.concurrent.Future[Int] = Future(<not completed>)
 
scala> Await.result(f, 120.seconds)
res0: Int = 1

OkHttp はボディのストリームや Reactive stream のサポートが無いため、それが必要ならば Akka HTTP 版か AHC 版の Gigahorse を使ってほしい。

Shaded AHC 2.0

Gigahorse は AHC 2.0 をシェーディングするようようになった。