Skip to content

Commit

Permalink
Update WebSocketCompression extension to use own platform implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
DRSchlaubi committed Apr 9, 2023
1 parent 99945d0 commit b943c30
Showing 1 changed file with 1 addition and 16 deletions.
17 changes: 1 addition & 16 deletions gateway/src/commonMain/kotlin/Compression.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@ package dev.kord.gateway
import dev.kord.common.annotation.KordUnsafe
import io.ktor.util.*
import io.ktor.websocket.*
import java.io.ByteArrayOutputStream
import java.util.zip.Inflater
import java.util.zip.InflaterOutputStream

/**
* [WebSocketExtension] inflating incoming websocket requests using `zlib`.
Expand Down Expand Up @@ -35,7 +32,7 @@ public class WebSocketCompression : WebSocketExtension<Unit> {

override fun processIncomingFrame(frame: Frame): Frame {
return if (frame is Frame.Binary) {
frame.deflateData()
with(inflater) { Frame.Text(frame.inflateData()) }
} else {
frame
}
Expand All @@ -47,18 +44,6 @@ public class WebSocketCompression : WebSocketExtension<Unit> {
override fun serverNegotiation(requestedProtocols: List<WebSocketExtensionHeader>): List<WebSocketExtensionHeader> =
requestedProtocols

private fun Frame.deflateData(): Frame {
val outputStream = ByteArrayOutputStream()
InflaterOutputStream(outputStream, inflater).use {
it.write(data)
}

return outputStream.use {
val raw = String(outputStream.toByteArray(), 0, outputStream.size(), Charsets.UTF_8)
Frame.Text(raw)
}
}

public companion object : WebSocketExtensionFactory<Unit, WebSocketCompression> {
override val key: AttributeKey<WebSocketCompression> = AttributeKey("WebSocketCompression")
override val rsv1: Boolean = false
Expand Down

0 comments on commit b943c30

Please sign in to comment.