diff options
author | zachdriver <zach@driver.xyz> | 2018-05-25 12:44:15 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-25 12:44:15 -0700 |
commit | d61ed25db4d71ac182f09ce7bc02439470f3a998 (patch) | |
tree | bdc0089e60ac7cf84e850e2024acd5ddbcdbaaa0 /src/main/scala/xyz/driver/core/core.scala | |
parent | 57cd7aaf5a2154af698fddc39f4bff8fd3e4f6e7 (diff) | |
download | driver-core-d61ed25db4d71ac182f09ce7bc02439470f3a998.tar.gz driver-core-d61ed25db4d71ac182f09ce7bc02439470f3a998.tar.bz2 driver-core-d61ed25db4d71ac182f09ce7bc02439470f3a998.zip |
Add service exception json formatters and pass through exceptions in HttpRestServiceTransport (#168)v1.9.4
Diffstat (limited to 'src/main/scala/xyz/driver/core/core.scala')
-rw-r--r-- | src/main/scala/xyz/driver/core/core.scala | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/core/core.scala b/src/main/scala/xyz/driver/core/core.scala index 14e1b10..72237b9 100644 --- a/src/main/scala/xyz/driver/core/core.scala +++ b/src/main/scala/xyz/driver/core/core.scala @@ -3,6 +3,9 @@ package xyz.driver import scalaz.{Equal, Monad, OptionT} import eu.timepit.refined.api.{Refined, Validate} import eu.timepit.refined.collection.NonEmpty +import xyz.driver.core.rest.errors.ExternalServiceException + +import scala.concurrent.{ExecutionContext, Future} package object core { @@ -54,6 +57,14 @@ package object core { def toUnitOptionT: OptionT[H, Unit] = OptionT.optionT[H](monadT(monadicValue)(_ => Option(()))) } + + implicit class FutureExtensions[T](future: Future[T]) { + def passThroughExternalServiceException(implicit executionContext: ExecutionContext): Future[T] = + future.transform(identity, { + case ExternalServiceException(_, _, Some(e)) => e + case t: Throwable => t + }) + } } package core { |