HttpClientPort.kt

  1. package com.hexagonkt.http.client

  2. import com.hexagonkt.http.model.HttpRequestPort
  3. import com.hexagonkt.http.model.HttpResponsePort
  4. import com.hexagonkt.http.model.ServerEvent
  5. import com.hexagonkt.http.model.ws.WsSession
  6. import java.util.concurrent.Flow.Publisher

  7. interface HttpClientPort {

  8.     fun startUp(client: HttpClient)

  9.     fun shutDown()

  10.     fun started(): Boolean

  11.     fun send(request: HttpRequestPort): HttpResponsePort

  12.     fun sse(request: HttpRequestPort): Publisher<ServerEvent>

  13.     fun ws(
  14.         path: String,
  15.         onConnect: WsSession.() -> Unit,
  16.         onBinary: WsSession.(data: ByteArray) -> Unit,
  17.         onText: WsSession.(text: String) -> Unit,
  18.         onPing: WsSession.(data: ByteArray) -> Unit = {},
  19.         onPong: WsSession.(data: ByteArray) -> Unit = {},
  20.         onClose: WsSession.(status: Int, reason: String) -> Unit,
  21.     ): WsSession
  22. }