aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/scala/com/softwaremill/sttp/MonadError.scala
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/scala/com/softwaremill/sttp/MonadError.scala')
-rw-r--r--core/src/main/scala/com/softwaremill/sttp/MonadError.scala8
1 files changed, 8 insertions, 0 deletions
diff --git a/core/src/main/scala/com/softwaremill/sttp/MonadError.scala b/core/src/main/scala/com/softwaremill/sttp/MonadError.scala
index 77c6235..0dcc02c 100644
--- a/core/src/main/scala/com/softwaremill/sttp/MonadError.scala
+++ b/core/src/main/scala/com/softwaremill/sttp/MonadError.scala
@@ -41,7 +41,15 @@ object IdMonad extends MonadError[Id] {
override protected def handleWrappedError[T](rt: Id[T])(
h: PartialFunction[Throwable, Id[T]]): Id[T] = rt
}
+object TryMonad extends MonadError[Try] {
+ override def unit[T](t: T): Try[T] = Success(t)
+ override def map[T, T2](fa: Try[T])(f: (T) => T2): Try[T2] = fa.map(f)
+ override def flatMap[T, T2](fa: Try[T])(f: (T) => Try[T2]): Try[T2] = fa.flatMap(f)
+ override def error[T](t: Throwable): Try[T] = Failure(t)
+ override protected def handleWrappedError[T](rt: Try[T])(
+ h: PartialFunction[Throwable, Try[T]]): Try[T] = rt.recoverWith(h)
+}
class FutureMonad(implicit ec: ExecutionContext)
extends MonadAsyncError[Future] {