in src/main/scala/com/gu/ssm/utils/attempt/Attempt.scala [201:233]
def Right[A](a: A): Attempt[A] =
Attempt(Future.successful(scala.Right(a)))
/**
* Create an Attempt failure from an Failure instance, representing the possibility of multiple failures.
*/
def Left[A](errs: FailedAttempt): Attempt[A] =
Attempt(Future.successful(scala.Left(errs)))
/**
* Syntax sugar to create an Attempt failure if there's only a single error.
*/
def Left[A](err: Failure): Attempt[A] =
Attempt(Future.successful(scala.Left(FailedAttempt(err))))
/**
* Asyncronous versions of the Attempt Right/Left helpers for when you have
* a Future that returns a good/bad value directly.
*/
object Async {
/**
* Create an Attempt from a Future of a good value.
*/
def Right[A](fa: Future[A])(implicit ec: ExecutionContext): Attempt[A] =
Attempt(fa.map(scala.Right(_)))
/**
* Create an Attempt from a known failure in the future. For example,
* if a piece of logic fails but you need to make a Database/API call to
* get the failure information.
*/
def Left[A](ferr: Future[FailedAttempt])(implicit ec: ExecutionContext): Attempt[A] =
Attempt(ferr.map(scala.Left(_)))
}