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立てれば動いたはず)