val value = authenticateUser
private def authenticateUser = {
val holder = WS.url(platformUrl + "/userApi/auth/login?username=testuser&password=testPass")
val res = holder.post(Results.EmptyContent()).onComplete {
case Success(response) => response.cookies.map{cookie => println(cookie.value.get)}
case Failure(errors) => println("")
// The `Future` failed.
}
}
如何从cookie.value.get
方法返回authenticateUser
?
答案 0 :(得分:0)
首先,您似乎有许多 Cookie,因此不清楚,您要返回哪个的值。
更重要的是,您实际上不应该返回值本身。我们的想法是返回Future
,可以进一步转换到下游:
def authenticateUser = WS.url(..)
.post(Results.EmptyContent)
.map { _.cookies }
.map { _.find(_.name == "Auth").flatMap(_.value).getOrElse("") }
现在,在下游的某个地方,您可以拥有类似的内容:
def serve(request: Request): Future[Response] = authenticateUser
.map { user =>
serveRequest(user, request)
}.map { result => makeResponse(result) }
我不知道Play的细节,所以,考虑Request/Response
东西“伪代码”,但基本的想法是你的整个处理应该是Future
转换的链。一般规则是从不阻止服务线程。