aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/core/rest/errors/serviceException.scala
diff options
context:
space:
mode:
authorZach Smith <zach@driver.xyz>2017-10-17 14:57:31 -0700
committerZach Smith <zach@driver.xyz>2017-10-31 09:17:49 -0700
commite5911d0f0fa382f37a22978a5bae1d6c4b47963f (patch)
tree7679e6881a70a2e8576060683385bb81f676634f /src/main/scala/xyz/driver/core/rest/errors/serviceException.scala
parent4715cdab47febe8bb75c81d45d9619fc224477bc (diff)
downloaddriver-core-e5911d0f0fa382f37a22978a5bae1d6c4b47963f.tar.gz
driver-core-e5911d0f0fa382f37a22978a5bae1d6c4b47963f.tar.bz2
driver-core-e5911d0f0fa382f37a22978a5bae1d6c4b47963f.zip
Rename APIError -> ServiceException and subclasses
Diffstat (limited to 'src/main/scala/xyz/driver/core/rest/errors/serviceException.scala')
-rw-r--r--src/main/scala/xyz/driver/core/rest/errors/serviceException.scala41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/core/rest/errors/serviceException.scala b/src/main/scala/xyz/driver/core/rest/errors/serviceException.scala
new file mode 100644
index 0000000..94f9734
--- /dev/null
+++ b/src/main/scala/xyz/driver/core/rest/errors/serviceException.scala
@@ -0,0 +1,41 @@
+package xyz.driver.core.rest.errors
+
+import akka.http.scaladsl.model.{StatusCode, StatusCodes}
+
+abstract class ServiceException extends Exception {
+ def isPatientSensitive: Boolean = false
+
+ def statusCode: StatusCode
+ def message: String
+}
+
+final case class InvalidInputException(override val message: String = "Invalid input",
+ override val isPatientSensitive: Boolean = false)
+ extends ServiceException {
+ override def statusCode: StatusCode = StatusCodes.BadRequest
+}
+
+final case class InvalidActionException(override val message: String = "This action is not allowed",
+ override val isPatientSensitive: Boolean = false)
+ extends ServiceException {
+ override def statusCode: StatusCode = StatusCodes.Forbidden
+}
+
+final case class ResourceNotFoundException(override val message: String = "Resource not found",
+ override val isPatientSensitive: Boolean = false)
+ extends ServiceException {
+ override def statusCode: StatusCode = StatusCodes.NotFound
+}
+
+final case class ExternalServiceTimeoutException(override val message: String =
+ "Another service took too long to respond",
+ override val isPatientSensitive: Boolean = false)
+ extends ServiceException {
+ override def statusCode: StatusCode = StatusCodes.GatewayTimeout
+}
+
+final case class DatabaseException(override val message: String = "Database access error",
+ override val isPatientSensitive: Boolean = false)
+ extends ServiceException {
+ override def statusCode: StatusCode = StatusCodes.InternalServerError
+}