From ca1abf1103139da68c1c2e938636d1d7d03b6b01 Mon Sep 17 00:00:00 2001 From: vlad Date: Tue, 28 Feb 2017 22:22:39 -0800 Subject: Nice utils to implement rest services. Unmarshalling --- src/main/scala/xyz/driver/core/rest.scala | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src/main') diff --git a/src/main/scala/xyz/driver/core/rest.scala b/src/main/scala/xyz/driver/core/rest.scala index db54f97..b250ac9 100644 --- a/src/main/scala/xyz/driver/core/rest.scala +++ b/src/main/scala/xyz/driver/core/rest.scala @@ -143,18 +143,19 @@ object rest { protected implicit val materializer: ActorMaterializer implicit class ResponseEntityFoldable(entity: Unmarshal[ResponseEntity]) { - def fold[T](default: => T)(implicit um: Unmarshaller[ResponseEntity, T]): Future[T] = { - if (entity.value.isKnownEmpty()) Future.successful[T](default) else entity.to[T](um, exec, materializer) - } + def fold[T](default: => T)(implicit um: Unmarshaller[ResponseEntity, T]): Future[T] = + if (entity.value.isKnownEmpty()) Future.successful[T](default) else entity.to[T] } protected def unitResponse(request: Future[Unmarshal[ResponseEntity]]): OptionT[Future, Unit] = OptionT[Future, Unit](request.flatMap(_.to[JsValue]).map(_ => Option(()))) - protected def optionalResponse[T: RootJsonFormat](request: Future[Unmarshal[ResponseEntity]]): OptionT[Future, T] = + protected def optionalResponse[T](request: Future[Unmarshal[ResponseEntity]])( + implicit um: Unmarshaller[ResponseEntity, Option[T]]): OptionT[Future, T] = OptionT[Future, T](request.flatMap(_.fold(Option.empty[T]))) - protected def listResponse[T: RootJsonFormat](request: Future[Unmarshal[ResponseEntity]]): ListT[Future, T] = + protected def listResponse[T](request: Future[Unmarshal[ResponseEntity]])( + implicit um: Unmarshaller[ResponseEntity, List[T]]): ListT[Future, T] = ListT[Future, T](request.flatMap(_.fold(List.empty[T]))) protected def jsonEntity(json: JsValue): RequestEntity = -- cgit v1.2.3