HttpRequest.kt

  1. package com.hexagonkt.http.model

  2. import com.hexagonkt.http.*
  3. import com.hexagonkt.http.model.HttpMethod.GET
  4. import com.hexagonkt.http.model.HttpProtocol.HTTP
  5. import java.security.cert.X509Certificate

  6. data class HttpRequest(
  7.     override val method: HttpMethod = GET,
  8.     override val protocol: HttpProtocol = HTTP,
  9.     override val host: String = "localhost",
  10.     override val port: Int = 80,
  11.     override val path: String = "",
  12.     override val queryParameters: QueryParameters = QueryParameters(),
  13.     override val headers: Headers = Headers(),
  14.     override val body: Any = "",
  15.     override val parts: List<HttpPart> = emptyList(),
  16.     override val formParameters: FormParameters = FormParameters(),
  17.     override val cookies: List<Cookie> = emptyList(),
  18.     override val contentType: ContentType? = null,
  19.     override val certificateChain: List<X509Certificate> = emptyList(),
  20.     override val accept: List<ContentType> = emptyList(),
  21.     override val contentLength: Long = -1L,
  22.     override val authorization: Authorization? = null,
  23. ) : HttpRequestPort {

  24.     init {
  25.         checkHeaders(headers)
  26.     }

  27.     override fun with(
  28.         body: Any,
  29.         headers: Headers,
  30.         contentType: ContentType?,
  31.         method: HttpMethod,
  32.         protocol: HttpProtocol,
  33.         host: String,
  34.         port: Int,
  35.         path: String,
  36.         queryParameters: QueryParameters,
  37.         parts: List<HttpPart>,
  38.         formParameters: FormParameters,
  39.         cookies: List<Cookie>,
  40.         accept: List<ContentType>,
  41.         authorization: Authorization?,
  42.         certificateChain: List<X509Certificate>,
  43.     ): HttpRequestPort =
  44.         copy(
  45.             body = body,
  46.             headers = headers,
  47.             contentType = contentType,
  48.             method = method,
  49.             protocol = protocol,
  50.             host = host,
  51.             port = port,
  52.             path = path,
  53.             queryParameters = queryParameters,
  54.             parts = parts,
  55.             formParameters = formParameters,
  56.             cookies = cookies,
  57.             accept = accept,
  58.             authorization = authorization,
  59.             certificateChain = certificateChain,
  60.         )
  61. }