Skip to content
This repository was archived by the owner on Aug 10, 2024. It is now read-only.

Commit 14a72c8

Browse files
authored
Merge pull request #292 from kwebio/ktor_2.0-migration
Ktor 2.0 migration
2 parents f5d8f04 + c9bede7 commit 14a72c8

13 files changed

+47
-40
lines changed

build.gradle

+6-4
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ plugins {
2121
apply plugin: "com.github.ben-manes.versions"
2222

2323
ext {
24-
ktor_version = '1.6.7'
24+
ktor_version = '2.1.1'
2525
}
2626

2727
group 'com.github.kwebio'
28-
version '0.11.4'
28+
version '0.11.6'
2929

3030
repositories {
3131
mavenCentral()
@@ -56,9 +56,11 @@ dependencies {
5656
////////////////////
5757
// Ktor dependencies
5858
////////////////////
59-
compile "io.ktor:ktor-server-core:$ktor_version"
6059
compile "io.ktor:ktor-server-jetty:$ktor_version"
61-
compile "io.ktor:ktor-websockets:$ktor_version"
60+
compile "io.ktor:ktor-server-websockets:$ktor_version"
61+
compile "io.ktor:ktor-server-default-headers:$ktor_version"
62+
compile "io.ktor:ktor-server-compression:$ktor_version"
63+
compile "io.ktor:ktor-server-caching-headers:$ktor_version"
6264
compile "io.ktor:ktor-network-tls-certificates:$ktor_version"
6365

6466
compile 'io.mola.galimatias:galimatias:0.2.1'

src/main/kotlin/kweb/KtorFeature.kt

+8-7
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package kweb
22

3-
import io.ktor.application.Application
4-
import io.ktor.application.ApplicationCall
5-
import io.ktor.application.call
6-
import io.ktor.application.feature
7-
import io.ktor.routing.get
8-
import io.ktor.routing.routing
3+
import io.ktor.server.application.Application
4+
import io.ktor.server.application.ApplicationCall
5+
import io.ktor.server.application.call
6+
import io.ktor.server.application.plugin
7+
import io.ktor.server.application.*
8+
import io.ktor.server.routing.get
9+
import io.ktor.server.routing.routing
910
import kweb.routing.PathReceiver
1011

1112
/**
@@ -33,7 +34,7 @@ fun Application.installKwebOnRemainingRoutes(buildPage: WebBrowser.() -> Unit) {
3334
* @see kweb.demos.feature.kwebFeature
3435
*/
3536
suspend fun ApplicationCall.respondKweb(buildPage: WebBrowser.() -> Unit) =
36-
application.feature(Kweb).respondKweb(this, buildPage)
37+
application.plugin(Kweb).respondKweb(this, buildPage)
3738

3839
/**
3940
* If you were previously using Kweb routes and you want to switch to Ktor, this is for you.

src/main/kotlin/kweb/Kweb.kt

+11-9
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,20 @@ package kweb
22

33
import com.google.common.cache.Cache
44
import com.google.common.cache.CacheBuilder
5-
import io.ktor.application.*
6-
import io.ktor.features.*
5+
import io.ktor.server.application.*
6+
import io.ktor.server.plugins.*
77
import io.ktor.http.*
8-
import io.ktor.http.cio.websocket.*
9-
import io.ktor.http.cio.websocket.Frame.*
10-
import io.ktor.request.*
11-
import io.ktor.response.*
12-
import io.ktor.routing.*
8+
import io.ktor.websocket.*
9+
import io.ktor.websocket.Frame.*
10+
import io.ktor.server.request.*
11+
import io.ktor.server.response.*
12+
import io.ktor.server.routing.*
1313
import io.ktor.server.engine.*
1414
import io.ktor.server.jetty.*
15+
import io.ktor.server.plugins.defaultheaders.*
16+
import io.ktor.server.plugins.compression.*
17+
import io.ktor.server.websocket.*
1518
import io.ktor.util.*
16-
import io.ktor.websocket.*
1719
import kotlinx.coroutines.Dispatchers
1820
import kotlinx.coroutines.GlobalScope
1921
import kotlinx.coroutines.launch
@@ -105,7 +107,7 @@ class Kweb private constructor(
105107
*
106108
* @see kweb.demos.feature.kwebFeature for an example
107109
*/
108-
companion object Feature : ApplicationFeature<Application, Feature.Configuration, Kweb> {
110+
companion object Feature : BaseApplicationPlugin<Application, Feature.Configuration, Kweb> {
109111
// Note that this is not KwebConfiguration, which is a different thing
110112
class Configuration {
111113
var debug: Boolean = true

src/main/kotlin/kweb/client/ClientConnection.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package kweb.client
22

3-
import io.ktor.http.cio.websocket.Frame
4-
import io.ktor.http.cio.websocket.Frame.Text
5-
import io.ktor.http.cio.websocket.WebSocketSession
3+
import io.ktor.websocket.Frame
4+
import io.ktor.websocket.Frame.Text
5+
import io.ktor.websocket.WebSocketSession
66
import kotlinx.coroutines.GlobalScope
77
import kotlinx.coroutines.channels.Channel
88
import kotlinx.coroutines.launch

src/main/kotlin/kweb/client/HttpRequestInfo.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package kweb.client
22

3-
import io.ktor.features.origin
4-
import io.ktor.request.ApplicationRequest
3+
import io.ktor.server.plugins.origin
4+
import io.ktor.server.request.ApplicationRequest
55

66
/**
77
* @param request This is the raw [ApplicationRequest](https://api.ktor.io/1.3.2/io.ktor.request/-application-request/index.html)

src/main/kotlin/kweb/config/KwebConfiguration.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package kweb.config
22

3-
import io.ktor.application.*
3+
import io.ktor.server.application.*
44
import io.ktor.http.*
5-
import io.ktor.response.*
5+
import io.ktor.server.response.*
66
import kweb.Kweb
77
import mu.KotlinLogging
88
import java.time.Duration

src/main/kotlin/kweb/html/HtmlDocumentSupplier.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package kweb.html
22

3-
import io.ktor.routing.*
3+
import io.ktor.server.routing.*
44
import kweb.plugins.KwebPlugin
55
import kweb.state.RenderSpanNames
66
import org.jsoup.nodes.Document

src/main/kotlin/kweb/https/SSLConfig.kt

+4-3
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,10 @@ import io.ktor.network.tls.extensions.HashAlgorithm
55
import io.ktor.network.tls.extensions.SignatureAlgorithm
66
import io.ktor.server.engine.ConnectorType
77
import io.ktor.server.engine.EngineSSLConnectorConfig
8-
import io.ktor.util.KtorExperimentalAPI
98
import java.io.File
109
import java.security.KeyStore
10+
import kotlin.text.toCharArray
1111

12-
@KtorExperimentalAPI
1312
val defaultKeyStore by lazy {
1413
buildKeyStore {
1514
certificate("test") {
@@ -27,7 +26,9 @@ data class SSLConfig constructor(
2726
override val keyStorePath: File? = null,
2827
override val keyAlias: String = "mykey",
2928
override val keyStorePassword: () -> CharArray = { "changeit".toCharArray() },
30-
override val privateKeyPassword: () -> CharArray = { "changeit".toCharArray() }
29+
override val privateKeyPassword: () -> CharArray = { "changeit".toCharArray() },
30+
override val trustStore: KeyStore? = null,
31+
override val trustStorePath: File? = null
3132
) : EngineSSLConnectorConfig {
3233
override val type: ConnectorType = ConnectorType.HTTPS
3334
}

src/main/kotlin/kweb/plugins/KwebPlugin.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package kweb.plugins
22

3-
import io.ktor.routing.Routing
3+
import io.ktor.server.routing.Routing
44
import kweb.Element
55
import java.util.*
66
import org.jsoup.nodes.Document as JSoupDocument

src/main/kotlin/kweb/plugins/staticFiles/StaticFilesPlugin.kt

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package kweb.plugins.staticFiles
22

3-
import io.ktor.application.install
4-
import io.ktor.features.CachingHeaders
3+
import io.ktor.server.application.install
4+
import io.ktor.server.plugins.cachingheaders.*
55
import io.ktor.http.CacheControl
66
import io.ktor.http.content.*
7-
import io.ktor.routing.Route
8-
import io.ktor.routing.Routing
7+
import io.ktor.server.http.content.*
8+
import io.ktor.server.routing.Route
9+
import io.ktor.server.routing.Routing
910
import kweb.plugins.KwebPlugin
1011
import java.io.File
1112

@@ -42,7 +43,7 @@ class StaticFilesPlugin private constructor(private val servedRoute: String, pri
4243
TODO: so that we can set a very long cache time (> 1 year). For now it defaults
4344
TODO: to one hour.
4445
*/
45-
options {
46+
options { call, content ->
4647
CachingOptions(CacheControl.MaxAge(maxAgeSeconds = maxCacheAgeSeconds))
4748
}
4849
}

src/main/kotlin/kweb/prelude.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package kweb
22

3-
import io.ktor.routing.*
3+
import io.ktor.server.routing.*
44
import io.mola.galimatias.URL
55
import kotlinx.serialization.Serializable
66
import kotlinx.serialization.json.*

src/main/kotlin/kweb/routing/RouteReceiver.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package kweb.routing
22

3-
import io.ktor.routing.RoutingPath
3+
import io.ktor.server.routing.RoutingPath
44
import kweb.h1
55

66
class RouteReceiver internal constructor() {

src/main/kotlin/kweb/routing/routing.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package kweb.routing
22

3-
import io.ktor.routing.*
3+
import io.ktor.server.routing.*
44
import kweb.ElementCreator
55
import kweb.Kweb
66
import kweb.h1

0 commit comments

Comments
 (0)