HttpClientPort.kt
package com.hexagonkt.http.client
import com.hexagonkt.http.model.HttpRequestPort
import com.hexagonkt.http.model.HttpResponsePort
import com.hexagonkt.http.model.ServerEvent
import com.hexagonkt.http.model.ws.WsSession
import java.util.concurrent.Flow.Publisher
interface HttpClientPort {
fun startUp(client: HttpClient)
fun shutDown()
fun started(): Boolean
fun send(request: HttpRequestPort): HttpResponsePort
fun sse(request: HttpRequestPort): Publisher<ServerEvent>
fun ws(
path: String,
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,
): WsSession
}