HttpResponse.kt
package com.hexagonkt.http.model
import com.hexagonkt.http.checkHeaders
import com.hexagonkt.http.model.ws.WsSession
data class HttpResponse(
override val body: Any = "",
override val headers: Headers = Headers(),
override val contentType: ContentType? = null,
override val cookies: List<Cookie> = emptyList(),
override val status: HttpStatus = NOT_FOUND_404,
override val contentLength: Long = -1L,
override val onConnect: WsSession.() -> Unit = {},
override val onBinary: WsSession.(data: ByteArray) -> Unit = {},
override val onText: WsSession.(text: String) -> Unit = {},
override val onPing: WsSession.(data: ByteArray) -> Unit = {},
override val onPong: WsSession.(data: ByteArray) -> Unit = {},
override val onClose: WsSession.(status: Int, reason: String) -> Unit = { _, _ -> },
) : HttpResponsePort {
init {
checkHeaders(headers)
}
override fun with(
status: HttpStatus,
body: Any,
headers: Headers,
contentType: ContentType?,
cookies: List<Cookie>,
onConnect: WsSession.() -> Unit,
onBinary: WsSession.(data: ByteArray) -> Unit,
onText: WsSession.(text: String) -> Unit,
onPing: WsSession.(data: ByteArray) -> Unit,
onPong: WsSession.(data: ByteArray) -> Unit,
onClose: WsSession.(status: Int, reason: String) -> Unit,
): HttpResponsePort =
copy(
status = status,
body = body,
headers = headers,
contentType = contentType,
cookies = cookies,
onConnect = onConnect,
onBinary = onBinary,
onText = onText,
onPing = onPing,
onPong = onPong,
onClose = onClose,
)
}