Skip to content

Commit 8175169

Browse files
authored
Merge pull request #12 from nomisRev/update-to-ktor-3
Update to ktor 3
2 parents 5f4ce64 + 4088538 commit 8175169

File tree

11 files changed

+71
-73
lines changed

11 files changed

+71
-73
lines changed

gradle/libs.versions.toml

+8-9
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
[versions]
2-
coroutines = "1.7.0"
3-
dokka = "1.8.10"
4-
kotlin = "1.9.10"
5-
kotest = "5.5.4"
6-
kotest-plugin = "5.5.5"
2+
coroutines = "1.10.1"
3+
dokka = "2.0.0"
4+
kotlin = "2.1.10"
5+
kotest = "5.9.1"
76
kover = "0.9.1"
87
detekt = "1.23.8"
98
kotlinx-knit="0.5.0"
10-
ktor = "2.3.0"
9+
ktor = "3.1.0"
1110
pubsub = "1.123.6"
1211
gcloud = "1.20.5"
1312
publish="0.25.3"
14-
knit="0.4.0"
15-
spotless="6.22.0"
13+
knit="0.5.0"
14+
spotless="7.0.2"
1615
google-api="2.17.1"
1716
logback = "1.4.11"
1817

@@ -33,7 +32,7 @@ logback = { module = "ch.qos.logback:logback-classic", version.ref = "logback" }
3332
[plugins]
3433
dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" }
3534
kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" }
36-
kotest-multiplatform = { id = "io.kotest.multiplatform", version.ref = "kotest-plugin" }
35+
kotest-multiplatform = { id = "io.kotest.multiplatform", version.ref = "kotest" }
3736
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
3837
detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" }
3938
publish = { id = "com.vanniktech.maven.publish", version.ref="publish" }

pubsub-kotlinx-serialization-json/src/main/kotlin/io/github/nomisrev/gcp/pubsub/serialization/KotlinXSerialization.kt

+5-5
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import kotlinx.serialization.serializer
2424
public class KotlinXJsonEncoder<A>(
2525
private val stringFormat: StringFormat,
2626
private val serializer: KSerializer<A>,
27-
private val configure: PubsubMessage.Builder.() -> Unit
27+
private val configure: PubsubMessage.Builder.() -> Unit,
2828
) : MessageEncoder<A> {
2929
override suspend fun encode(value: A): PubsubMessage =
3030
PubsubMessage.newBuilder()
@@ -39,7 +39,7 @@ public class KotlinXJsonEncoder<A>(
3939
*/
4040
public class KotlinXJsonDecoder<A>(
4141
private val stringFormat: StringFormat,
42-
private val serializer: KSerializer<A>
42+
private val serializer: KSerializer<A>,
4343
) : MessageDecoder<A> {
4444
override suspend fun decode(message: PubsubMessage): A =
4545
stringFormat.decodeFromString(serializer, message.data.toStringUtf8())
@@ -60,7 +60,7 @@ public suspend inline fun <reified A> GcpPublisher.publish(
6060
message: A,
6161
json: Json = Json,
6262
serializer: KSerializer<A> = serializer(),
63-
noinline configure: PubsubMessage.Builder.() -> Unit = {}
63+
noinline configure: PubsubMessage.Builder.() -> Unit = {},
6464
): String = publish(topicId, message, KotlinXJsonEncoder(json, serializer, configure))
6565

6666
/**
@@ -78,7 +78,7 @@ public suspend inline fun <reified A> GcpPublisher.publish(
7878
messages: Iterable<A>,
7979
json: Json = Json,
8080
serializer: KSerializer<A> = serializer(),
81-
noinline configure: PubsubMessage.Builder.() -> Unit = {}
81+
noinline configure: PubsubMessage.Builder.() -> Unit = {},
8282
): List<String> = publish(topicId, messages, KotlinXJsonEncoder(json, serializer, configure))
8383

8484
/**
@@ -103,7 +103,7 @@ public suspend inline fun <reified A> GcpPublisher.publish(
103103
*/
104104
public inline fun <reified A> PubsubRecord.deserialized(
105105
json: Json = Json,
106-
serializer: KSerializer<A> = serializer()
106+
serializer: KSerializer<A> = serializer(),
107107
): A = json.decodeFromString(serializer, data.toStringUtf8())
108108

109109
/**

pubsub-ktor-kotlinx-serialization-json/src/main/kotlin/io/github/nomisrev/gcp/pubsub/ktor/serialization/KotlinXSerialization.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public inline fun <reified A> GcpPubSubSyntax.subscribe(
4949
json: Json = Json,
5050
serializer: KSerializer<A> = serializer(),
5151
noinline configure: Subscriber.Builder.() -> Unit = {},
52-
noinline handler: suspend (AcknowledgeableValue<A>) -> Unit
52+
noinline handler: suspend (AcknowledgeableValue<A>) -> Unit,
5353
): Job =
5454
subscriber
5555
.subscribe(subscriptionId) { configure() }
@@ -59,7 +59,7 @@ public inline fun <reified A> GcpPubSubSyntax.subscribe(
5959
handler(
6060
AcknowledgeableValue(
6161
json.decodeFromString(serializer, record.message.data.toStringUtf8()),
62-
record
62+
record,
6363
)
6464
)
6565
)
@@ -75,5 +75,5 @@ public inline fun <reified A> GcpPubSubSyntax.subscribeDeserialized(
7575
json: Json = Json,
7676
serializer: KSerializer<A> = serializer(),
7777
noinline configure: Subscriber.Builder.() -> Unit = {},
78-
noinline handler: suspend (AcknowledgeableValue<A>) -> Unit
78+
noinline handler: suspend (AcknowledgeableValue<A>) -> Unit,
7979
): Job = subscribe(subscriptionId, concurrency, context, json, serializer, configure, handler)

pubsub-ktor/src/main/kotlin/io/github/nomisrev/gcp/pubsub/ktor/GcpPubSub.kt

+7-8
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,14 @@ import io.github.nomisrev.gcp.pubsub.PubsubRecord
1515
import io.github.nomisrev.gcp.pubsub.SubscriptionId
1616
import io.github.nomisrev.gcp.pubsub.TopicId
1717
import io.ktor.server.application.Application
18-
import io.ktor.server.application.ApplicationCall
1918
import io.ktor.server.application.ApplicationStopped
2019
import io.ktor.server.application.BaseApplicationPlugin
2120
import io.ktor.server.application.application
2221
import io.ktor.server.application.install
2322
import io.ktor.server.application.pluginOrNull
23+
import io.ktor.server.routing.RoutingContext
2424
import io.ktor.util.AttributeKey
25-
import io.ktor.util.KtorDsl
26-
import io.ktor.util.pipeline.PipelineContext
25+
import io.ktor.utils.io.KtorDsl
2726
import java.util.concurrent.ConcurrentHashMap
2827
import kotlin.coroutines.CoroutineContext
2928
import kotlinx.coroutines.CoroutineScope
@@ -74,7 +73,7 @@ public class GcpPubSub(internal val application: Application, configuration: Con
7473
this@GcpPubSub.credentialsProvider?.let { setCredentialsProvider(it) }
7574
}
7675
.build()
77-
)
76+
),
7877
)
7978
.also { admin ->
8079
application.environment.monitor.subscribe(ApplicationStopped) { admin.close() }
@@ -108,7 +107,7 @@ public class GcpPubSub(internal val application: Application, configuration: Con
108107
concurrency: Int,
109108
context: CoroutineContext,
110109
configure: Subscriber.Builder.() -> Unit,
111-
handler: suspend (PubsubRecord) -> Unit
110+
handler: suspend (PubsubRecord) -> Unit,
112111
): Job =
113112
subscriber
114113
.subscribe(subscriptionId) { configure() }
@@ -192,7 +191,7 @@ public class GcpPubSub(internal val application: Application, configuration: Con
192191

193192
public override fun install(
194193
pipeline: Application,
195-
configure: Configuration.() -> Unit
194+
configure: Configuration.() -> Unit,
196195
): GcpPubSub = GcpPubSub(pipeline, Configuration().apply(configure))
197196
}
198197
}
@@ -221,7 +220,7 @@ public class GcpPubSub(internal val application: Application, configuration: Con
221220
*/
222221
public fun Application.pubSub(
223222
projectId: ProjectId,
224-
block: suspend GcpPubSubSyntax.() -> Unit
223+
block: suspend GcpPubSubSyntax.() -> Unit,
225224
): Job {
226225
val plugin = pubSub()
227226
return launch { block(plugin.gcpPubSub(projectId, this)) }
@@ -248,6 +247,6 @@ public fun Application.pubSub(
248247
* }
249248
* ```
250249
*/
251-
public fun PipelineContext<Unit, ApplicationCall>.pubSub(): GcpPubSub = application.pubSub()
250+
public fun RoutingContext.pubSub(): GcpPubSub = call.application.pubSub()
252251

253252
private fun Application.pubSub(): GcpPubSub = pluginOrNull(GcpPubSub) ?: install(GcpPubSub)

pubsub-ktor/src/main/kotlin/io/github/nomisrev/gcp/pubsub/ktor/GcpPubSubSyntax.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,6 @@ public interface GcpPubSubSyntax : GcpPubsSubAdmin, GcpPublisher, CoroutineScope
4545
concurrency: Int = DEFAULT_CONCURRENCY,
4646
context: CoroutineContext = Dispatchers.Default,
4747
configure: Subscriber.Builder.() -> Unit = {},
48-
handler: suspend (PubsubRecord) -> Unit
48+
handler: suspend (PubsubRecord) -> Unit,
4949
): Job
5050
}

pubsub-test/src/main/kotlin/io/github/nomisrev/gcp/pubsub/test/PubSubEmulator.kt

+6-6
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ import org.testcontainers.utility.DockerImageName
3636
public class PubSubEmulator(
3737
imageName: DockerImageName =
3838
DockerImageName.parse("gcr.io/google.com/cloudsdktool/cloud-sdk:316.0.0-emulators"),
39-
private val credentials: CredentialsProvider = NoCredentialsProvider.create()
39+
private val credentials: CredentialsProvider = NoCredentialsProvider.create(),
4040
) : ExternalResource(), Startable, AutoCloseable, BaseApplicationPlugin<Application, Unit, Unit> {
4141

4242
override val key: AttributeKey<Unit> = AttributeKey("PubSubEmulatorExtension")
@@ -86,7 +86,7 @@ public class PubSubEmulator(
8686
/** Create [TopicAdminSettings] that is by default linked to test channel. */
8787
public fun topicAdminSettings(
8888
transportChannelProvider: TransportChannelProvider = channel,
89-
credentialsProvider: CredentialsProvider = credentials
89+
credentialsProvider: CredentialsProvider = credentials,
9090
): TopicAdminSettings =
9191
TopicAdminSettings.newBuilder()
9292
.setTransportChannelProvider(transportChannelProvider)
@@ -96,7 +96,7 @@ public class PubSubEmulator(
9696
/** Create [SubscriptionAdminSettings] that is by default linked to test channel. */
9797
public fun subscriptionAdminSettings(
9898
transportChannelProvider: TransportChannelProvider = channel,
99-
credentialsProvider: CredentialsProvider = credentials
99+
credentialsProvider: CredentialsProvider = credentials,
100100
): SubscriptionAdminSettings =
101101
SubscriptionAdminSettings.newBuilder()
102102
.setTransportChannelProvider(transportChannelProvider)
@@ -112,7 +112,7 @@ public class PubSubEmulator(
112112

113113
public fun subscriber(
114114
projectId: ProjectId,
115-
configure: Subscriber.Builder.(subscriptionId: SubscriptionId) -> Unit = {}
115+
configure: Subscriber.Builder.(subscriptionId: SubscriptionId) -> Unit = {},
116116
): GcpSubscriber =
117117
GcpSubscriber(projectId) {
118118
configure(it)
@@ -122,7 +122,7 @@ public class PubSubEmulator(
122122

123123
public fun publisher(
124124
projectId: ProjectId,
125-
configure: Publisher.Builder.(topicId: TopicId) -> Unit = {}
125+
configure: Publisher.Builder.(topicId: TopicId) -> Unit = {},
126126
): GcpPublisher =
127127
GcpPublisher(projectId) {
128128
configure(it)
@@ -144,7 +144,7 @@ public class PubSubEmulator(
144144
.setTransportChannelProvider(channel)
145145
.setCredentialsProvider(credentials)
146146
.build()
147-
)
147+
),
148148
)
149149

150150
override fun before() {

pubsub/src/main/kotlin/io/github/nomisrev/gcp/pubsub/GcpPublisher.kt

+17-17
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public interface MessageEncoder<A> {
1414

1515
public fun GcpPublisher(
1616
projectId: ProjectId,
17-
configure: Publisher.Builder.(topicId: TopicId) -> Unit = {}
17+
configure: Publisher.Builder.(topicId: TopicId) -> Unit = {},
1818
): GcpPublisher = DefaultGcpPublisher(projectId, configure)
1919

2020
public interface GcpPublisher : AutoCloseable {
@@ -25,43 +25,43 @@ public interface GcpPublisher : AutoCloseable {
2525
public suspend fun <A> publish(
2626
topicId: TopicId,
2727
messages: Iterable<A>,
28-
encoder: MessageEncoder<A>
28+
encoder: MessageEncoder<A>,
2929
): List<String> = publish(topicId, messages.map { encoder.encode(it) })
3030

3131
public suspend fun publish(
3232
topicId: TopicId,
3333
message: ByteString,
34-
configure: PubsubMessage.Builder.() -> Unit = {}
34+
configure: PubsubMessage.Builder.() -> Unit = {},
3535
): String = publish(topicId, PubsubMessage.newBuilder().setData(message).apply(configure).build())
3636

3737
public suspend fun publish(
3838
topicId: TopicId,
3939
message: String,
40-
configure: PubsubMessage.Builder.() -> Unit = {}
40+
configure: PubsubMessage.Builder.() -> Unit = {},
4141
): String =
4242
publish(
4343
topicId,
44-
PubsubMessage.newBuilder().setData(ByteString.copyFromUtf8(message)).apply(configure).build()
44+
PubsubMessage.newBuilder().setData(ByteString.copyFromUtf8(message)).apply(configure).build(),
4545
)
4646

4747
public suspend fun publish(
4848
topicId: TopicId,
4949
message: ByteBuffer,
50-
configure: PubsubMessage.Builder.() -> Unit = {}
50+
configure: PubsubMessage.Builder.() -> Unit = {},
5151
): String =
5252
publish(
5353
topicId,
54-
PubsubMessage.newBuilder().setData(ByteString.copyFrom(message)).apply(configure).build()
54+
PubsubMessage.newBuilder().setData(ByteString.copyFrom(message)).apply(configure).build(),
5555
)
5656

5757
public suspend fun publish(
5858
topicId: TopicId,
5959
message: ByteArray,
60-
configure: PubsubMessage.Builder.() -> Unit = {}
60+
configure: PubsubMessage.Builder.() -> Unit = {},
6161
): String =
6262
publish(
6363
topicId,
64-
PubsubMessage.newBuilder().setData(ByteString.copyFrom(message)).apply(configure).build()
64+
PubsubMessage.newBuilder().setData(ByteString.copyFrom(message)).apply(configure).build(),
6565
)
6666

6767
public suspend fun <A> publish(topicId: TopicId, message: A, encoder: MessageEncoder<A>): String =
@@ -72,52 +72,52 @@ public interface GcpPublisher : AutoCloseable {
7272
public suspend fun GcpPublisher.publish(
7373
topicId: TopicId,
7474
messages: Iterable<ByteString>,
75-
configure: PubsubMessage.Builder.() -> Unit = {}
75+
configure: PubsubMessage.Builder.() -> Unit = {},
7676
): List<String> =
7777
publish(topicId, messages.map { PubsubMessage.newBuilder().setData(it).apply(configure).build() })
7878

7979
@JvmName("publishString")
8080
public suspend fun GcpPublisher.publish(
8181
topicId: TopicId,
8282
messages: Iterable<String>,
83-
configure: PubsubMessage.Builder.() -> Unit = {}
83+
configure: PubsubMessage.Builder.() -> Unit = {},
8484
): List<String> =
8585
publish(
8686
topicId,
8787
messages.map {
8888
PubsubMessage.newBuilder().setData(ByteString.copyFromUtf8(it)).apply(configure).build()
89-
}
89+
},
9090
)
9191

9292
@JvmName("publishByteBuffer")
9393
public suspend fun GcpPublisher.publish(
9494
topicId: TopicId,
9595
messages: Iterable<ByteBuffer>,
96-
configure: PubsubMessage.Builder.() -> Unit = {}
96+
configure: PubsubMessage.Builder.() -> Unit = {},
9797
): List<String> =
9898
publish(
9999
topicId,
100100
messages.map {
101101
PubsubMessage.newBuilder().setData(ByteString.copyFrom(it)).apply(configure).build()
102-
}
102+
},
103103
)
104104

105105
@JvmName("publishByteArray")
106106
public suspend fun GcpPublisher.publish(
107107
topicId: TopicId,
108108
messages: Iterable<ByteArray>,
109-
configure: PubsubMessage.Builder.() -> Unit = {}
109+
configure: PubsubMessage.Builder.() -> Unit = {},
110110
): List<String> =
111111
publish(
112112
topicId,
113113
messages.map {
114114
PubsubMessage.newBuilder().setData(ByteString.copyFrom(it)).apply(configure).build()
115-
}
115+
},
116116
)
117117

118118
private class DefaultGcpPublisher(
119119
val projectId: ProjectId,
120-
val configure: Publisher.Builder.(topicId: TopicId) -> Unit
120+
val configure: Publisher.Builder.(topicId: TopicId) -> Unit,
121121
) : GcpPublisher {
122122
val publisherCache = ConcurrentHashMap<TopicId, Publisher>()
123123

pubsub/src/main/kotlin/io/github/nomisrev/gcp/pubsub/GcpPubsSubAdmin.kt

+4-4
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import io.github.nomisrev.gcp.core.await
2222
public fun GcpPubsSubAdmin(
2323
projectId: ProjectId,
2424
configureSubscriptionAdmin: SubscriptionAdminSettings.Builder.() -> Unit,
25-
configureTopicAdmin: TopicAdminSettings.Builder.() -> Unit
25+
configureTopicAdmin: TopicAdminSettings.Builder.() -> Unit,
2626
): GcpPubsSubAdmin {
2727
val topicAdminClient =
2828
TopicAdminClient.create(TopicAdminSettings.newBuilder().apply(configureTopicAdmin).build())
@@ -99,7 +99,7 @@ public interface GcpPubsSubAdmin : AutoCloseable {
9999
public suspend fun createSubscription(
100100
subscriptionId: SubscriptionId,
101101
topicId: TopicId,
102-
configure: Subscription.Builder.() -> Unit = {}
102+
configure: Subscription.Builder.() -> Unit = {},
103103
): Subscription
104104

105105
/** Throws [NotFoundException] when subscription not found */
@@ -120,7 +120,7 @@ public interface GcpPubsSubAdmin : AutoCloseable {
120120
private class DefaultPubSubAdmin(
121121
val projectId: ProjectId,
122122
val topicAdminClient: TopicAdminClient,
123-
val subscriptionAdminClient: SubscriptionAdminClient
123+
val subscriptionAdminClient: SubscriptionAdminClient,
124124
) : GcpPubsSubAdmin {
125125

126126
override suspend fun createTopic(topicId: TopicId): Topic {
@@ -162,7 +162,7 @@ private class DefaultPubSubAdmin(
162162
override suspend fun createSubscription(
163163
subscriptionId: SubscriptionId,
164164
topicId: TopicId,
165-
configure: Subscription.Builder.() -> Unit
165+
configure: Subscription.Builder.() -> Unit,
166166
): Subscription =
167167
subscriptionAdminClient
168168
.createSubscriptionCallable()

0 commit comments

Comments
 (0)