TestHttpClientResponse

class TestHttpClientResponse : HttpResponse

Constructors

<init>

TestHttpClientResponse(
    call: HttpClientCall,
    status: HttpStatusCode,
    headers: Headers,
    contentData: ByteArray,
    coroutineContext: <ERROR CLASS>)

Properties

call

val call: HttpClientCall

The associated HttpClientCall containing both the underlying HttpClientCall.request and HttpClientCall.response.

content

val content: ByteReadChannel

ByteReadChannel with the payload of the response.

coroutineContext

val coroutineContext: <ERROR CLASS>

headers

val headers: Headers

Message Headers

requestTime

val requestTime: GMTDate

GMTDate of the request start.

responseTime

val responseTime: GMTDate

GMTDate of the response start.

status

val status: HttpStatusCode

The HttpStatusCode returned by the server. It includes both, the HttpStatusCode.description and the HttpStatusCode.value (code).

version

val version: HttpProtocolVersion

HTTP version. Usually HttpProtocolVersion.HTTP_1_1 or HttpProtocolVersion.HTTP_2_0.

Inherited Properties

executionContext

open val executionContext: Job

A Job representing the process of this response.

Inherited Functions

close

open fun close(): Unit

Extension Functions

charset

fun HttpMessage.charset(): Charset?

Parse charset from Content-Type header value

contentLength

fun HttpMessage.contentLength(): Long?

Parse Content-Length header value

contentType

fun HttpMessage.contentType(): ContentType?

Parse Content-Type header value

decodeChunked

fun CoroutineScope.decodeChunked(
    input: ByteReadChannel
): DecoderJob

Start a chunked stream decoder coroutine

discardRemaining

suspend fun HttpResponse.discardRemaining(): Unit

Efficiently discards the remaining bytes of HttpResponse.content.

embeddedServer

fun <TEngine : ApplicationEngine, TConfiguration : Configuration> CoroutineScope.embeddedServer(
    factory: ApplicationEngineFactory<TEngine, TConfiguration>,
    port: Int = 80,
    host: String = "0.0.0.0",
    watchPaths: List<String> = emptyList(),
    parentCoroutineContext: <ERROR CLASS> = EmptyCoroutineContext,
    configure: TConfiguration.() -> Unit = {},
    module: Application.() -> Unit
): TEngine

Creates an embedded server with the given factory, listening on host:port

etag

fun HttpMessage.etag(): String?

Parse E-Tag header value

expires

fun HttpMessage.expires(): Date?

Parse Expires header

httpServer

fun CoroutineScope.httpServer(
    settings: HttpServerSettings,
    handler: HttpRequestHandler
): HttpServer

Start an http server with settings invoking handler for every request

lastModified

fun HttpMessage.lastModified(): Date?

Parse Last-Modified header

parseMultipart

fun CoroutineScope.parseMultipart(
    input: ByteReadChannel,
    headers: HttpHeadersMap
): ReceiveChannel<MultipartEvent>
fun CoroutineScope.parseMultipart(
    input: ByteReadChannel,
    contentType: CharSequence,
    contentLength: Long?
): ReceiveChannel<MultipartEvent>
fun CoroutineScope.parseMultipart(
    boundaryPrefixed: ByteBuffer,
    input: ByteReadChannel,
    totalLength: Long?
): ReceiveChannel<MultipartEvent>

Starts a multipart parser coroutine producing multipart events

pinger

fun CoroutineScope.pinger(
    outgoing: SendChannel<Frame>,
    period: Duration,
    timeout: Duration,
    pool: ObjectPool<ByteBuffer> = KtorDefaultPool
): SendChannel<Pong>

Launch pinger coroutine on CoroutineScope that is sending ping every specified period to outgoing channel, waiting for and verifying client’s pong frames. It is also handling timeout and sending timeout close frame

fun CoroutineScope.pinger(
    outgoing: SendChannel<Frame>,
    periodMillis: Long,
    timeoutMillis: Long,
    pool: ObjectPool<ByteBuffer> = KtorDefaultPool
): SendChannel<Pong>

Launch pinger coroutine on CoroutineScope that is sending ping every specified periodMillis to outgoing channel, waiting for and verifying client’s pong frames. It is also handling timeoutMillis and sending timeout close frame

ponger

fun CoroutineScope.ponger(
    outgoing: SendChannel<Pong>,
    pool: ObjectPool<ByteBuffer> = KtorDefaultPool
): SendChannel<Ping>

Launch a ponger actor job on the CoroutineScope sending pongs to outgoing channel. It is acting for every client’s ping frame and replying with corresponding pong

readBytes

suspend fun HttpResponse.readBytes(count: Int): ByteArray

Exactly reads count bytes of the HttpResponse.content.

suspend fun HttpResponse.readBytes(): ByteArray

Reads the whole HttpResponse.content if Content-Length was specified. Otherwise it just reads one byte.

readText

suspend fun HttpResponse.readText(
    charset: Charset? = null
): String

Read the HttpResponse.content as a String. You can pass an optional charset to specify a charset in the case no one is specified as part of the Content-Type response. If no charset specified either as parameter or as part of the response, HttpResponseConfig.defaultCharset will be used.

receive

suspend fun <T> HttpResponse.receive(): T

Tries to receive the payload of the response as an specific type T.

setCookie

fun HttpMessage.setCookie(): List<Cookie>

Parse Set-Cookie header value

startConnectionPipeline

fun CoroutineScope.startConnectionPipeline(
    input: ByteReadChannel,
    output: ByteWriteChannel,
    timeout: WeakTimeoutQueue,
    handler: HttpRequestHandler
): Job

Start connection HTTP pipeline invoking handler for every request. Note that handler could be invoked multiple times concurrently due to HTTP pipeline nature

vary

fun HttpMessage.vary(): List<String>?

Parse Vary header value

writeMultipleRanges

fun CoroutineScope.writeMultipleRanges(
    channelProducer: (LongRange) -> ByteReadChannel,
    ranges: List<LongRange>,
    fullLength: Long?,
    boundary: String,
    contentType: String
): ByteReadChannel

Start multirange response writer coroutine