The mapResponse directive is used as a building block for Custom Directives to transform a response that was generated by the inner route. This directive transforms complete responses.
sourcetrait ApiRoutes{protecteddef system:ActorSystemprivate val log =Logging(system,"ApiRoutes")private val NullJsonEntity=HttpEntity(ContentTypes.`application/json`,"{}")privatedef nonSuccessToEmptyJsonEntity(response:HttpResponse):HttpResponse=
response.status match {case code if code.isSuccess => response
case code =>
log.warning("Dropping response entity since response status code was: {}", code)
response.withEntity(NullJsonEntity)}/** Wrapper for all of our JSON API routes */def apiRoute(innerRoutes:=>Route):Route=
mapResponse(nonSuccessToEmptyJsonEntity)(innerRoutes)}
val route:Route=
apiRoute {get{
complete(InternalServerError)}}// tests:Get("/")~> route ~> check {
responseAs[String] shouldEqual "{}"}