CorsHandler.kt

  1. package com.hexagonkt.http.server.handlers

  2. import com.hexagonkt.http.handlers.FilterHandler
  3. import com.hexagonkt.http.handlers.HttpHandler
  4. import com.hexagonkt.http.handlers.HttpPredicate
  5. import com.hexagonkt.http.model.HttpMethod
  6. import com.hexagonkt.http.model.HttpMethod.Companion.ALL
  7. import com.hexagonkt.http.model.HttpStatus
  8. import com.hexagonkt.http.model.NO_CONTENT_204
  9. import com.hexagonkt.http.server.callbacks.CorsCallback

  10. class CorsHandler(pattern: String, cors: CorsCallback) :
  11.     HttpHandler by FilterHandler(HttpPredicate(pattern = pattern), cors) {

  12.     constructor(cors: CorsCallback) : this("*", cors)

  13.     constructor(
  14.         pattern: String = "*",
  15.         allowedOrigin: String = "*",
  16.         allowedMethods: Set<HttpMethod> = ALL,
  17.         allowedHeaders: Set<String> = emptySet(),
  18.         exposedHeaders: Set<String> = emptySet(),
  19.         supportCredentials: Boolean = true,
  20.         preFlightStatus: HttpStatus = NO_CONTENT_204,
  21.         preFlightMaxAge: Long = 0
  22.     ) : this(
  23.         pattern,
  24.         CorsCallback(
  25.             allowedOrigin,
  26.             allowedMethods,
  27.             allowedHeaders,
  28.             exposedHeaders,
  29.             supportCredentials,
  30.             preFlightStatus,
  31.             preFlightMaxAge,
  32.         )
  33.     )
  34. }