From 2c524be93052fc6d57359a00fd60d957099885c6 Mon Sep 17 00:00:00 2001 From: Zach Smith Date: Wed, 27 Sep 2017 22:20:53 -0700 Subject: Refactor rest package into separate files --- src/main/scala/xyz/driver/core/rest/Implicits.scala | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/main/scala/xyz/driver/core/rest/Implicits.scala (limited to 'src/main/scala/xyz/driver/core/rest/Implicits.scala') 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) + } + } +} -- cgit v1.2.3