HttpResponsePort.kt
package com.hexagonkt.http.model
import com.hexagonkt.http.model.ws.WsSession
interface HttpResponsePort : HttpMessage {
val status: HttpStatus
val contentLength: Long // length of response.body (or 0)
val onConnect: WsSession.() -> Unit
val onBinary: WsSession.(data: ByteArray) -> Unit
val onText: WsSession.(text: String) -> Unit
val onPing: WsSession.(data: ByteArray) -> Unit
val onPong: WsSession.(data: ByteArray) -> Unit
val onClose: WsSession.(status: Int, reason: String) -> Unit
fun with(
status: HttpStatus = this.status,
body: Any = this.body,
headers: Headers = this.headers,
contentType: ContentType? = this.contentType,
cookies: List<Cookie> = this.cookies,
onConnect: WsSession.() -> Unit = this.onConnect,
onBinary: WsSession.(data: ByteArray) -> Unit = this.onBinary,
onText: WsSession.(text: String) -> Unit = this.onText,
onPing: WsSession.(data: ByteArray) -> Unit = this.onPing,
onPong: WsSession.(data: ByteArray) -> Unit = this.onPong,
onClose: WsSession.(status: Int, reason: String) -> Unit = this.onClose,
): HttpResponsePort
operator fun plus(header: Header): HttpResponsePort =
with(headers = headers + header)
operator fun plus(cookie: Cookie): HttpResponsePort =
with(cookies = cookies + cookie)
operator fun plus(headers: Headers): HttpResponsePort =
with(headers = this.headers + headers)
operator fun plus(cookies: List<Cookie>): HttpResponsePort =
with(cookies = this.cookies + cookies)
}