Headers.kt

  1. package com.hexagonkt.http.model

  2. data class Headers(
  3.     val httpFields: Map<String, Header>
  4. ) : Map<String, Header> by httpFields {

  5.     constructor(fields: List<Header>) : this(fields.associateBy { it.name.lowercase() })

  6.     constructor(vararg fields: Header) : this(fields.toList())

  7.     operator fun plus(element: Header): Headers =
  8.         copy(httpFields = httpFields + (element.name to element))

  9.     operator fun plus(element: Headers): Headers =
  10.         copy(httpFields = httpFields + element.httpFields)

  11.     operator fun minus(name: String): Headers =
  12.         copy(httpFields = httpFields - name.lowercase())

  13.     override operator fun get(key: String): Header? =
  14.         httpFields[key.lowercase()]
  15. }