RecordCallback.kt

  1. package com.hexagonkt.rest.tools

  2. import com.hexagonkt.http.handlers.HttpContext

  3. /**
  4.  * Callback that records server requests and responses (the whole event context). The result is
  5.  * taken before any subsequent filter is applied (just how it was received).
  6.  */
  7. class RecordCallback : (HttpContext) -> HttpContext {

  8.     var calls: List<HttpContext> = emptyList()

  9.     override fun invoke(context: HttpContext): HttpContext {

  10.         val result = context.next()
  11.         calls += context.with(event = result.event.copy(response = result.response)) as HttpContext

  12.         return result
  13.     }
  14. }