def handleActorResponse: PartialFunction[Try[Any], (StatusCode, ResponseResult)] = {
case Failure(exp) =>
(InternalServerError, ResponseResult(ResponseResult.StatFailure, exp.toString))
case Success(res) =>
val ret = res.asInstanceOf[ResponseResult]
log.info("response is: " + ret)
ret.status match {
case ResponseResult.StatSuccess => (OK, ret)
case _ => (InternalServerError, ret)
}
}
def completeResponse(arg: (StatusCode, ResponseResult)) = {
complete(arg._1, arg._2.toString)
}
// @todo change ResponseResult to Any for better flexibility
def sendResponse(response: Future[Any]) = {
onComplete(response) {
handleActorResponse andThen completeResponse
}
}