我有一个控制器,有很多业务逻辑,我想移动Action.async代码块。此代码的工作,我怎么能移动到另一个类(服务)是播放框架2.5移动Action.async逻辑从控制器到服务
def tweetsnew(query: String) = Action.async {
// Move From Here...
credentials.map {
case (consumerKey, requestToken) =>
ws.url("https://api.twitter.com/1.1/search/tweets.json")
.sign(OAuthCalculator(consumerKey, requestToken))
.withQueryString("q" -> query)
.withQueryString("max_id" -> "833342796736167936")
.get().map { twitterResponse =>
if (twitterResponse.status == 200) {
// Here There Are More Complex Logic
Ok("That is fine: "+twitterResponse.body)
} else {
throw new Exception(s"Could not retrieve tweets for $query query term")
}
}
}.getOrElse {
Future.failed(new Exception("You did not correctly configure the Twitter credentials"))
}
//....To Here. To Another Class
}
我已经检查了docummentation的Action.async?:里面的代码,一些涉及到create a Future[Result]但我不能使该函数返回Action.async期望的相同类型。
谢谢@vdebegue这是一个很好的解决方案。我想提出另一种解决方案。 –