Skip to content

Commit 516973e

Browse files
committed
chore: instantiate HttpClient for calling GitHub in server
1 parent 5fde7a9 commit 516973e

File tree

4 files changed

+15
-8
lines changed

4 files changed

+15
-8
lines changed

jit-binding-server/src/main/kotlin/io/github/typesafegithub/workflows/jitbindingserver/Main.kt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import io.github.typesafegithub.workflows.mavenbinding.VersionArtifacts
1010
import io.github.typesafegithub.workflows.mavenbinding.buildPackageArtifacts
1111
import io.github.typesafegithub.workflows.mavenbinding.buildVersionArtifacts
1212
import io.github.typesafegithub.workflows.shared.internal.getGithubAuthToken
13+
import io.ktor.client.HttpClient
14+
import io.ktor.client.engine.cio.CIO
1315
import io.ktor.http.HttpStatusCode
1416
import io.ktor.server.application.Application
1517
import io.ktor.server.application.ApplicationCall
@@ -60,11 +62,12 @@ fun main() {
6062
}
6163

6264
fun Application.appModule(
63-
buildVersionArtifacts: suspend (ActionCoords) -> VersionArtifacts?,
65+
buildVersionArtifacts: suspend (ActionCoords, HttpClient) -> VersionArtifacts?,
6466
buildPackageArtifacts: suspend (ActionCoords, String, (Collection<ActionCoords>) -> Unit) -> Map<String, String>,
6567
getGithubAuthToken: () -> String,
6668
) {
67-
val bindingsCache = buildBindingsCache(buildVersionArtifacts)
69+
val httpClient = HttpClient(CIO)
70+
val bindingsCache = buildBindingsCache(buildVersionArtifacts, httpClient)
6871
val metadataCache = buildMetadataCache(bindingsCache, buildPackageArtifacts, getGithubAuthToken)
6972
installPlugins(prometheusRegistry)
7073

@@ -77,13 +80,14 @@ fun Application.appModule(
7780
}
7881

7982
private fun buildBindingsCache(
80-
buildVersionArtifacts: suspend (ActionCoords) -> VersionArtifacts?,
83+
buildVersionArtifacts: suspend (ActionCoords, HttpClient) -> VersionArtifacts?,
84+
httpClient: HttpClient,
8185
): LoadingCache<ActionCoords, CachedVersionArtifact> =
8286
Caffeine
8387
.newBuilder()
8488
.refreshAfterWrite(1.hours)
8589
.recordStats()
86-
.asLoadingCache<ActionCoords, CachedVersionArtifact> { buildVersionArtifacts(it) }
90+
.asLoadingCache<ActionCoords, CachedVersionArtifact> { buildVersionArtifacts(it, httpClient) }
8791

8892
@Suppress("ktlint:standard:function-signature") // Conflict with detekt.
8993
private fun buildMetadataCache(

maven-binding-builder/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ plugins {
55
dependencies {
66
implementation("org.jetbrains.kotlin:kotlin-compiler")
77
api("io.arrow-kt:arrow-core:2.2.0")
8+
api("io.ktor:ktor-client-core:3.3.3")
89
api(projects.actionBindingGenerator)
910
implementation(projects.sharedInternal)
1011
implementation("io.github.oshai:kotlin-logging:7.0.13")

maven-binding-builder/src/main/kotlin/io/github/typesafegithub/workflows/mavenbinding/JarBuilding.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import io.github.typesafegithub.workflows.actionbindinggenerator.domain.NewestFo
77
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.TypingActualSource
88
import io.github.typesafegithub.workflows.actionbindinggenerator.generation.ActionBinding
99
import io.github.typesafegithub.workflows.actionbindinggenerator.generation.generateBinding
10+
import io.ktor.client.HttpClient
1011
import org.jetbrains.kotlin.cli.common.ExitCode
1112
import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
1213
import org.jetbrains.kotlin.cli.common.messages.MessageRenderer
@@ -31,9 +32,9 @@ internal data class Jars(
3132
val typingActualSource: TypingActualSource?,
3233
)
3334

34-
internal suspend fun ActionCoords.buildJars(): Jars? {
35+
internal suspend fun ActionCoords.buildJars(httpClient: HttpClient): Jars? {
3536
val binding =
36-
generateBinding(metadataRevision = NewestForVersion).also {
37+
generateBinding(metadataRevision = NewestForVersion, httpClient = httpClient).also {
3738
if (it.isEmpty()) return null
3839
}
3940

maven-binding-builder/src/main/kotlin/io/github/typesafegithub/workflows/mavenbinding/VersionArtifactsBuilding.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package io.github.typesafegithub.workflows.mavenbinding
22

33
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.ActionCoords
44
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.TypingActualSource
5+
import io.ktor.client.HttpClient
56

67
sealed interface Artifact
78

@@ -18,9 +19,9 @@ data class VersionArtifacts(
1819
val typingActualSource: TypingActualSource?,
1920
)
2021

21-
suspend fun buildVersionArtifacts(actionCoords: ActionCoords): VersionArtifacts? {
22+
suspend fun buildVersionArtifacts(actionCoords: ActionCoords, httpClient: HttpClient): VersionArtifacts? {
2223
with(actionCoords) {
23-
val jars = buildJars() ?: return null
24+
val jars = buildJars(httpClient = httpClient) ?: return null
2425
val pom = buildPomFile()
2526
val mainJarSize by lazy { jars.mainJar().size }
2627
val mainJarMd5Checksum by lazy { jars.mainJar().md5Checksum() }

0 commit comments

Comments
 (0)