Skip to content

Commit

Permalink
response content magnet fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
daviddenton committed May 27, 2019
1 parent b80788d commit 9c6fefb
Showing 1 changed file with 24 additions and 8 deletions.
Expand Up @@ -18,42 +18,58 @@ object ResponseContentMagnet {
/**
* Convert Buf to a ResponseBuilderMagnet for building responses
*/
implicit def bufToMagnet[T](s: Buf): ResponseContentMagnet[T] = (b: ResponseBuilder[T]) => b.withContent(s)
implicit def bufToMagnet[T](s: Buf): ResponseContentMagnet[T] = new ResponseContentMagnet[T] {
override def apply(b: ResponseBuilder[T]) = b.withContent(s)
}

/**
* Convert OutputStream writing function to a ResponseBuilderMagnet for building responses
*/
implicit def outputStreamToMagnet[T](f: OutputStream => Unit): ResponseContentMagnet[T] = (b: ResponseBuilder[T]) => b.withContent(f)
implicit def outputStreamToMagnet[T](f: OutputStream => Unit): ResponseContentMagnet[T] = new ResponseContentMagnet[T] {
override def apply(b: ResponseBuilder[T]) = b.withContent(f)
}

/**
* Convert ChannelBuffer to a ResponseBuilderMagnet for building responses
*/
implicit def channelBufferToMagnet[T](bytebuf: ByteBuf): ResponseContentMagnet[T] = (b: ResponseBuilder[T]) => b.withContent(bytebuf)
implicit def channelBufferToMagnet[T](bytebuf: ByteBuf): ResponseContentMagnet[T] = new ResponseContentMagnet[T] {
override def apply(b: ResponseBuilder[T]) = b.withContent(bytebuf)
}

/**
* Convert AsyncStream to a ResponseBuilderMagnet for building responses
*/
implicit def streamToMagnet[T](stream: AsyncStream[T]): ResponseContentMagnet[T] = (b: ResponseBuilder[T]) => b.withContent(stream)
implicit def streamToMagnet[T](stream: AsyncStream[T]): ResponseContentMagnet[T] = new ResponseContentMagnet[T] {
override def apply(b: ResponseBuilder[T]) = b.withContent(stream)
}

/**
* Convert Reader to a ResponseBuilderMagnet for building responses
*/
implicit def readerToMagnet[T](reader: Reader[Buf]): ResponseContentMagnet[T] = (b: ResponseBuilder[T]) => b.withContent(reader)
implicit def readerToMagnet[T](reader: Reader[Buf]): ResponseContentMagnet[T] = new ResponseContentMagnet[T] {
override def apply(b: ResponseBuilder[T]) = b.withContent(reader)
}

/**
* Convert a custom format type (eg. JsonObject) to a ResponseBuilderMagnet for building responses
*/
implicit def customFormatToMagnet[T](t: T): ResponseContentMagnet[T] = (b: ResponseBuilder[T]) => b.withContent(t)
implicit def customFormatToMagnet[T](t: T): ResponseContentMagnet[T] = new ResponseContentMagnet[T] {
override def apply(b: ResponseBuilder[T]) = b.withContent(t)
}

/**
* Convert String to a ResponseBuilderMagnet for building responses
*/
implicit def stringToMagnet[T](s: String): ResponseContentMagnet[T] = (b: ResponseBuilder[T]) => if (b.response.status.code < 400) b.withContent(s) else b.withErrorMessage(s)
implicit def stringToMagnet[T](s: String): ResponseContentMagnet[T] = new ResponseContentMagnet[T] {
override def apply(b: ResponseBuilder[T]) = if (b.response.status.code < 400) b.withContent(s) else b.withErrorMessage(s)
}

/**
* Convert an Exception to a ResponseBuilderMagnet for building responses
*/
implicit def exceptionToMagnet[T](error: Throwable): ResponseContentMagnet[T] = (b: ResponseBuilder[T]) => b.withError(error)
implicit def exceptionToMagnet[T](error: Throwable): ResponseContentMagnet[T] = new ResponseContentMagnet[T] {
override def apply(b: ResponseBuilder[T]) = b.withError(error)
}
}


0 comments on commit 9c6fefb

Please sign in to comment.