aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKseniya Tomskikh <ktomskih@datamonsters.co>2017-12-06 11:13:52 +0700
committerKseniya Tomskikh <ktomskih@datamonsters.co>2017-12-07 11:45:10 +0700
commit2664b915a044f7bc5eda2722145ebe978d9adf1a (patch)
treed4b42448ef92e8f4a7a3f5c53ab366db09271fe7
parentbb37df3a7d871ae4ff37c3cfc3fecb11f1f245c3 (diff)
downloadrest-query-2664b915a044f7bc5eda2722145ebe978d9adf1a.tar.gz
rest-query-2664b915a044f7bc5eda2722145ebe978d9adf1a.tar.bz2
rest-query-2664b915a044f7bc5eda2722145ebe978d9adf1a.zip
PDSUI-2432 Fixed domain exception handler
-rw-r--r--src/main/scala/xyz/driver/pdsuicommon/http/Directives.scala33
1 files changed, 26 insertions, 7 deletions
diff --git a/src/main/scala/xyz/driver/pdsuicommon/http/Directives.scala b/src/main/scala/xyz/driver/pdsuicommon/http/Directives.scala
index 93eb62f..4f53a9d 100644
--- a/src/main/scala/xyz/driver/pdsuicommon/http/Directives.scala
+++ b/src/main/scala/xyz/driver/pdsuicommon/http/Directives.scala
@@ -13,6 +13,7 @@ import xyz.driver.pdsuicommon.domain._
import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
import xyz.driver.core.generators
import xyz.driver.core.rest.ContextHeaders
+import xyz.driver.core.rest.errors.{InvalidActionException, InvalidInputException, ResourceNotFoundException}
import scala.util.control._
import scala.util._
@@ -69,14 +70,32 @@ trait Directives {
}
def domainExceptionHandler(req: String): ExceptionHandler = {
- def errorResponse(ex: Throwable) =
- ErrorsResponse(Seq(ResponseError(None, ex.getMessage, 1)), req)
+ def errorResponse(msg: String, code: Int) =
+ ErrorsResponse(Seq(ResponseError(None, msg, code)), req)
ExceptionHandler {
- case ex: AuthenticationException => complete(StatusCodes.Unauthorized -> errorResponse(ex))
- case ex: AuthorizationException => complete(StatusCodes.Forbidden -> errorResponse(ex))
- case ex: NotFoundException => complete(StatusCodes.NotFound -> errorResponse(ex))
- case ex: DomainException => complete(StatusCodes.BadRequest -> errorResponse(ex))
- case NonFatal(ex) => complete(StatusCodes.InternalServerError -> errorResponse(ex))
+ case ex: AuthenticationException =>
+ complete(StatusCodes.Unauthorized -> errorResponse(ex.getMessage, 401))
+
+ case ex: InvalidActionException =>
+ complete(StatusCodes.Forbidden -> errorResponse(ex.message, 403))
+
+ case ex: AuthorizationException =>
+ complete(StatusCodes.Forbidden -> errorResponse(ex.getMessage, 403))
+
+ case ex: ResourceNotFoundException =>
+ complete(StatusCodes.NotFound -> errorResponse(ex.message, 404))
+
+ case ex: NotFoundException =>
+ complete(StatusCodes.NotFound -> errorResponse(ex.getMessage, 404))
+
+ case ex: InvalidInputException =>
+ complete(StatusCodes.BadRequest -> errorResponse(ex.message, 400))
+
+ case ex: DomainException =>
+ complete(StatusCodes.BadRequest -> errorResponse(ex.getMessage, 400))
+
+ case NonFatal(ex) =>
+ complete(StatusCodes.InternalServerError -> errorResponse(ex.getMessage, 500))
}
}