aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/core/rest/Implicits.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/xyz/driver/core/rest/Implicits.scala')
-rw-r--r--src/main/scala/xyz/driver/core/rest/Implicits.scala17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/core/rest/Implicits.scala b/src/main/scala/xyz/driver/core/rest/Implicits.scala
new file mode 100644
index 0000000..8b499dd
--- /dev/null
+++ b/src/main/scala/xyz/driver/core/rest/Implicits.scala
@@ -0,0 +1,17 @@
+package xyz.driver.core.rest
+
+import akka.http.scaladsl.marshalling.{ToEntityMarshaller, ToResponseMarshallable}
+import akka.http.scaladsl.model.StatusCodes
+
+import scala.concurrent.Future
+import scalaz.{Functor, OptionT}
+
+object Implicits {
+ implicit class OptionTRestAdditions[T](optionT: OptionT[Future, T]) {
+ def responseOrNotFound(successCode: StatusCodes.Success = StatusCodes.OK)(
+ implicit F: Functor[Future],
+ em: ToEntityMarshaller[T]): Future[ToResponseMarshallable] = {
+ optionT.fold[ToResponseMarshallable](successCode -> _, StatusCodes.NotFound -> None)
+ }
+ }
+}