FilterHandler.kt

  1. package com.hexagonkt.http.handlers

  2. import com.hexagonkt.handlers.FilterHandler
  3. import com.hexagonkt.handlers.Handler
  4. import com.hexagonkt.http.model.HttpMethod
  5. import com.hexagonkt.http.model.HttpStatus
  6. import com.hexagonkt.http.model.HttpCall
  7. import kotlin.reflect.KClass

  8. data class FilterHandler(
  9.     override val handlerPredicate: HttpPredicate = HttpPredicate(),
  10.     val block: HttpCallbackType
  11. ) : HttpHandler, Handler<HttpCall> by FilterHandler(handlerPredicate, toCallback(block)) {

  12.     constructor(
  13.         methods: Set<HttpMethod> = emptySet(),
  14.         pattern: String = "",
  15.         exception: KClass<out Exception>? = null,
  16.         status: HttpStatus? = null,
  17.         block: HttpCallbackType,
  18.     ) :
  19.         this(HttpPredicate(methods, pattern, exception, status), block)

  20.     constructor(method: HttpMethod, pattern: String = "", block: HttpCallbackType) :
  21.         this(setOf(method), pattern, block = block)

  22.     constructor(pattern: String, block: HttpCallbackType) :
  23.         this(emptySet(), pattern, block = block)

  24.     override fun addPrefix(prefix: String): HttpHandler =
  25.         copy(handlerPredicate = handlerPredicate.addPrefix(prefix))
  26. }