Skip to content

Commit 9bc77ce

Browse files
committed
chore: ktor client json serialization changes
1 parent ed9fefc commit 9bc77ce

File tree

10 files changed

+87
-14
lines changed

10 files changed

+87
-14
lines changed

common/build.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ dependencies {
2525
commonMainImplementation(libs.kotlinx.io.core)
2626
commonMainImplementation(libs.ktor.client.core)
2727
commonMainImplementation(libs.ktor.client.logging)
28-
commonMainImplementation(libs.ktor.client.serialization)
28+
commonMainImplementation(libs.ktor.client.content.negotiation)
29+
commonMainImplementation(libs.ktor.serialization.json)
2930
commonMainImplementation(libs.ktor.client.resources)
3031
commonMainImplementation(libs.ajalt.colormath)
3132
commonMainImplementation(libs.benasher44.uuid)

devtools/compiler/plugin/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@ plugins {
66
dependencies {
77
compileOnly(kotlin("compiler-embeddable"))
88
testImplementation(kotlin("compiler-embeddable"))
9-
testImplementation("com.github.tschuchortdev:kotlin-compile-testing:+")
9+
// testImplementation("dev.zacsweers.kctfork:ksp:+")
1010
}

gradle.properties

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
## Gradle
2+
org.gradle.jvmargs=-Xmx2048m
23
org.gradle.parallel=true
34
org.gradle.caching=true
45
org.gradle.daemon=false
56
org.gradle.configureondemand=true
67
org.gradle.configuration-cache=false
7-
org.gradle.jvmargs=-Xmx2048m
8+
# org.gradle.configuration-cache.problems=warn
9+
# org.gradle.configuration-cache.max-problems=5
810
org.gradle.kotlin.dsl.allWarningsAsErrors=true
911
# org.gradle.welcome=never
1012
# org.gradle.console=rich

gradle/build-logic/common-plugins/build.gradle.kts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,17 @@ dependencies {
9393
implementation(platform(libs.kotlin.bom))
9494
implementation(kotlin("stdlib"))
9595
implementation(libs.kotlinx.coroutines.core)
96+
// Http client and JSON serialization
97+
implementation(libs.ktor.client.java)
98+
implementation(libs.ktor.client.content.negotiation)
99+
implementation(libs.ktor.serialization.json)
100+
implementation(libs.ktor.client.resources)
101+
// Text styling
96102
implementation(libs.ajalt.mordant)
97-
implementation(libs.jte.runtime)
103+
// Exec Jar
98104
implementation(libs.build.zip.prefixer)
105+
// Templating
106+
implementation(libs.jte.runtime)
99107
// jteGenerate(libs.jte.models)
100108
// compileOnly(libs.jte.kotlin)
101109

@@ -124,6 +132,7 @@ dependencies {
124132
implementation(libs.build.nativeimage.plugin)
125133
implementation(libs.build.modulegraph.plugin)
126134
implementation(libs.build.cash.molecule.plugin)
135+
implementation(libs.build.npm.publish.plugin)
127136
testImplementation(gradleTestKit())
128137
// implementation(libs.build.mokkery.plugin)
129138
// implementation(libs.build.jte.plugin)
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package common
2+
3+
import io.ktor.client.*
4+
import io.ktor.client.engine.java.*
5+
import io.ktor.client.plugins.*
6+
import io.ktor.client.plugins.contentnegotiation.*
7+
import io.ktor.client.plugins.resources.Resources
8+
import io.ktor.http.*
9+
import io.ktor.resources.*
10+
import io.ktor.serialization.kotlinx.json.*
11+
import kotlinx.serialization.json.Json
12+
13+
@Resource("json") class JsonResource()
14+
15+
object ServiceClient {
16+
fun get() =
17+
HttpClient(Java) {
18+
install(Resources)
19+
install(ContentNegotiation) {
20+
json(
21+
Json {
22+
prettyPrint = true
23+
isLenient = true
24+
ignoreUnknownKeys = true
25+
})
26+
}
27+
install(HttpTimeout) {
28+
requestTimeoutMillis = 20_000
29+
connectTimeoutMillis = 5_000
30+
socketTimeoutMillis = 5_000
31+
}
32+
defaultRequest {
33+
url {
34+
protocol = URLProtocol.HTTPS
35+
host = "app.dev"
36+
}
37+
}
38+
engine { pipelining = true }
39+
}
40+
}

gradle/build-logic/common-plugins/src/main/kotlin/plugins/kotlin.docs.gradle.kts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,18 @@ plugins {
1212
id("org.jetbrains.kotlinx.kover")
1313
}
1414

15-
// Apply bincompat validation only to the root project.
15+
// Apply bin-compat validator plugin to the root project.
1616
if (project == rootProject) {
1717
apply(plugin = "org.jetbrains.kotlinx.binary-compatibility-validator")
1818
}
1919

20-
// Configure bincompat validation only if the plugin is applied to the root project.
20+
// Configure bin-compat validator.
2121
plugins.withId("org.jetbrains.kotlinx.binary-compatibility-validator") {
2222
extensions.configure<ApiValidationExtension>("apiValidation") { validationDisabled = true }
2323
}
2424

25+
// pluginManager.withPlugin("org.jetbrains.kotlin.jvm") {}
26+
2527
tasks {
2628
withType<DokkaTaskPartial>().configureEach {
2729
dokkaSourceSets.configureEach {

gradle/build-logic/common-plugins/src/main/kotlin/plugins/kotlin.mpp.gradle.kts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ plugins {
2020
id("dev.zacsweers.redacted")
2121
id("plugins.kotlin.docs")
2222
id("app.cash.molecule")
23+
// id("dev.petuska.npm.publish")
2324
// id("dev.mokkery")
2425
}
2526

@@ -70,6 +71,7 @@ kotlinMultiplatform.apply {
7071
js {
7172
useEsModules()
7273
binaries.executable()
74+
// binaries.library()
7375

7476
browser {
7577
commonWebpackConfig(
@@ -178,6 +180,8 @@ kotlinMultiplatform.apply {
178180
dependencies {
179181
implementation(kotlinw("browser"))
180182
// implementation(kotlinw("web"))
183+
// kspDependency("CommonMainMetadata", project(":devtools:ksp:processor"))
184+
// kspDependency("Js", project(":devtools:ksp:processor"))
181185
}
182186
}
183187
val jsTest by getting
@@ -225,7 +229,7 @@ tasks {
225229
val buildConfigExtn = extensions.create<BuildConfigExtension>("buildConfig")
226230
val buildConfig by register<BuildConfig>("buildConfig", buildConfigExtn)
227231
kotlinMultiplatform.sourceSets.named("${commonProjectName}Main") { kotlin.srcDirs(buildConfig) }
228-
maybeRegister<Task>("prepareKotlinIdeaImport") { dependsOn(buildConfig) }
232+
// maybeRegister<Task>("prepareKotlinIdeaImport") { dependsOn(buildConfig) }
229233
}
230234

231235
// configure jvm target for ksp

gradle/build-logic/gradle.properties

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
## Gradle
2+
org.gradle.jvmargs=-Xmx2048m
23
org.gradle.parallel=true
34
org.gradle.caching=true
45
org.gradle.daemon=false
56
org.gradle.configureondemand=true
67
org.gradle.configuration-cache=true
7-
org.gradle.jvmargs=-Xmx2048m
8+
org.gradle.configuration-cache.problems=warn
9+
org.gradle.configuration-cache.max-problems=5
810
org.gradle.kotlin.dsl.allWarningsAsErrors=true
911

1012
## Kotlin

gradle/libs.versions.toml

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ h2 = "2.2.220"
9191
micrometer = "1.11.2"
9292
swagger-ui = "5.1.3"
9393
config4k = "0.6.0"
94+
apache-commons-imaging = "1.0-alpha3"
9495

9596
# NPM Dependencies
9697
npm-highlightjs = "11.8.0"
@@ -120,6 +121,7 @@ modulegraph = "0.4.0"
120121
jetbrains-compose = "1.5.0-dev1114"
121122
jetbrains-compose-compiler = "1.5.0"
122123
cash-molecule = "1.1.0"
124+
npm-publish-plugin = "3.4.0"
123125

124126

125127
[libraries]
@@ -160,7 +162,7 @@ build-modulegraph-plugin = { module = "dev.iurysouza:modulegraph"
160162
build-jetbrains-compose-mpp = { module = "org.jetbrains.compose:compose-gradle-plugin" , version.ref = "jetbrains-compose"}
161163
build-jetbrains-compose-runtime = { module = "org.jetbrains.compose.runtime:runtime" , version.ref = "jetbrains-compose"}
162164
build-jetbrains-compose-compiler = { module = "org.jetbrains.compose.compiler:compiler" , version.ref = "jetbrains-compose-compiler"}
163-
165+
build-npm-publish-plugin = { module = "dev.petuska:npm-publish-gradle-plugin" , version.ref = "npm-publish-plugin"}
164166

165167
# Gradle Dependencies
166168
kotlin-bom = { module = "org.jetbrains.kotlin:kotlin-bom" , version.ref = "kotlin"}
@@ -206,6 +208,7 @@ ktor-server-default-headers = { module = "io.ktor:ktor-server-default-h
206208
ktor-server-status-pages = { module = "io.ktor:ktor-server-status-pages" , version.ref = "ktor"}
207209
ktor-server-auto-head = { module = "io.ktor:ktor-server-auto-head-response" , version.ref = "ktor"}
208210
ktor-server-forwarded-header = { module = "io.ktor:ktor-server-forwarded-header" , version.ref = "ktor"}
211+
209212
ktor-serialization-json = { module = "io.ktor:ktor-serialization-kotlinx-json" , version.ref = "ktor"}
210213
ktor-cohort-core = { module = "com.sksamuel.cohort:cohort-core" , version.ref = "ktor-cohort"}
211214
ktor-cohort-hikari = { module = "com.sksamuel.cohort:cohort-hikari" , version.ref = "ktor-cohort"}
@@ -215,8 +218,8 @@ ktor-client-cio = { module = "io.ktor:ktor-client-cio"
215218
ktor-client-java = { module = "io.ktor:ktor-client-java" , version.ref = "ktor"}
216219
ktor-client-okhttp = { module = "io.ktor:ktor-client-okhttp" , version.ref = "ktor"}
217220
ktor-client-jetty = { module = "io.ktor:ktor-client-jetty" , version.ref = "ktor"}
218-
ktor-client-serialization = { module = "io.ktor:ktor-client-serialization" , version.ref = "ktor"}
219221
ktor-client-websockets = { module = "io.ktor:ktor-client-websockets" , version.ref = "ktor"}
222+
ktor-client-content-negotiation = { module = "io.ktor:ktor-client-content-negotiation" , version.ref = "ktor"}
220223
ktor-client-auth = { module = "io.ktor:ktor-client-auth" , version.ref = "ktor"}
221224
ktor-client-logging = { module = "io.ktor:ktor-client-logging" , version.ref = "ktor"}
222225
ktor-client-resources = { module = "io.ktor:ktor-client-resources" , version.ref = "ktor"}
@@ -314,6 +317,8 @@ kotlin-wrappers-bom = { module = "org.jetbrains.kotlin-wrappers
314317
multiplatform-settings-core = { module = "com.russhwolf:multiplatform-settings" , version.ref = "kmp-settings" }
315318
multiplatform-settings-coroutines = { module = "com.russhwolf:multiplatform-settings-coroutines" , version.ref = "kmp-settings" }
316319

320+
apache-commons-imaging = { module = "org.apache.commons:commons-imaging" , version.ref = "apache-commons-imaging" }
321+
317322
[bundles]
318323
ktor-server = [
319324
"ktor-bom",
@@ -348,11 +353,12 @@ ktor-client = [
348353
"ktor-client-java",
349354
"ktor-client-okhttp",
350355
"ktor-client-jetty",
351-
"ktor-client-serialization",
352356
"ktor-client-websockets",
357+
"ktor-client-content-negotiation",
358+
"ktor-serialization-json",
359+
"ktor-client-resources",
353360
"ktor-client-auth",
354-
"ktor-client-logging",
355-
"ktor-client-resources"
361+
"ktor-client-logging"
356362
]
357363

358364
[plugins]

settings.gradle.kts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,11 @@ include(":dep-mgmt:catalog")
2424

2525
include(":devtools:ksp:processor")
2626

27-
include(":devtools:compiler:plugin")
27+
include(
28+
":devtools:compiler:plugin")
29+
30+
// includeBuild("misc/build") {
31+
// dependencySubstitution {
32+
// substitute(module("dev.suresh:misc-build")).using(project(":"))
33+
// }
34+
// }

0 commit comments

Comments
 (0)