I have this for-comprehension:
val seq = for {
accessToken <- EitherT(getAccessToken(code))
data <- EitherT(getDefaultData(accessToken))
user <- EitherT(mapUser(data.getResponseBody))
} yield {
if (Users.getUserByOriginId(user.origin).isEmpty) {
Users.register(user)
OAuthProvider.redirectToSignUp(user.userId.get)
} else {
OAuthProvider.redirectToAuthentication(user.userId.get)
}
}
It chains com.twitter.util.Future
operations, each of the methods returning a Future[\/[InvalidResponse, CorrectResponse]]
I now want to map
or match
over the result.
val response = seq.run match {
case x.left => "something"
case y.right => "something else"
}// this syntax is invalid
What is the correct syntax to match
between left
and right
?