DefaultHttpRequest

open class DefaultHttpRequest : HttpRequest

Default HttpRequest implementation.

Constructors

<init>

DefaultHttpRequest(
    call: HttpClientCall,
    data: HttpRequestData)

Default HttpRequest implementation.

Properties

attributes

open val attributes: Attributes

Typed Attributes associated to this call serving as a lightweight container.

call

open val call: HttpClientCall

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

content

open val content: OutgoingContent

An OutgoingContent representing the request body

coroutineContext

open val coroutineContext: <ERROR CLASS>

headers

open val headers: Headers

Message Headers

method

open val method: HttpMethod

The HttpMethod or HTTP VERB used for this request.

url

open val url: Url

The Url representing the endpoint and the uri for this request.

Inherited Properties

executionContext

open val executionContext: Job

Extension Functions

cacheControl

fun HttpMessage.cacheControl(): List<HeaderValue>

Parse CacheControl header.

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.

date

fun HttpMessage.date(): Date?

Parse Date header.

decodeChunked

fun CoroutineScope.decodeChunked(
    input: ByteReadChannel
): DecoderJob

Start a chunked stream decoder coroutine

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

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