mapHttpResponsePart

Changes response parts generated by the inner route.

Signature

def mapHttpResponsePart(f: HttpResponsePart  HttpResponsePart): Directive0 

Description

The mapHttpResponsePart directive is used as a building block for Custom Directives to transform a response part that was generated by the inner route. In contrast to mapHttpResponse this directive allows to transform parts of chunked responses.

See Directives transforming the response for similar directives.

Example

val prefixChunks = mapHttpResponsePart {
  case MessageChunk(data, _) => MessageChunk(HttpData("prefix"+data.asString))
  case x => x
}
val route =
  prefixChunks { ctx =>
    val resp = ctx.responder
    resp ! ChunkedResponseStart(HttpResponse())
    resp ! MessageChunk(HttpData("abc"))
    resp ! MessageChunk(HttpData("def"))
    resp ! ChunkedMessageEnd
  }

Get("/") ~> route ~> check {
  chunks ===
    List(MessageChunk(HttpData("prefixabc")),
         MessageChunk(HttpData("prefixdef")))
}