WS API でWeb上のデータを引っ張る
HTTP なコマンドで拾えるものは大概拾える。
import play.api.libs.concurrent.Execution.Implicits._
import play.api.libs.ws.{Response, WS}
import scala.util.{Failure, Success}
object RssLoader extends Logger {
def firstUri(uri:String) = {
def successOr(result:Response) = {
result.status match {
case 200 => Right(result.body)
case _ => Left(result.status)
}
}
val future = WS.url(uri).get() // Future[Response]
future.onSuccess { case success =>
successOr(success).fold(
status => logger.warn("Unable to get RSS %s (%d)".format(uri, status)),
body => logger.info("get rss values. %s".format(body))
)
}
}
}
RssLoader.firstUri("http://white-azalea.hatenablog.jp/rss")と書ける。
実行結果は
[info] m.a.RssLoader$ - get rss values.謎言語使いの徒然 http://white-azalea.hatenablog.jp/適当に気になった技術や言語を流すブログ。 Sun, 30 Jun 2013 01:26:09 +0900 http://blogs.law.harvard.edu/tech/rss Hatena::Blog フォームエラーをまとめて表示したい http://white-azalea.hatenablog.jp/entry/2013/06/30/012609<p>Playframework2.1.1 のフォームに値をバインドし、エラーを表示する際に、エラーのみを一覧表示で取得したい場合がある。<br /> その方法を探してみた。(そのまま今作ってるやつ)</p> <pre class="code" data-unlink> val userCreateForm = Form( tuple(
ただし、Playframework アプリケーションが動いていないと動作しない。
(UT時は多分FakeServer立てれば動いたはず)