Skip to content

Commit e681dd9

Browse files
authored
refactor(server): add wrapping type for version artifact results (#1951)
This refactoring is necessary because we're going to add another piece of info returned from binding generation.
1 parent 890776a commit e681dd9

File tree

5 files changed

+66
-37
lines changed

5 files changed

+66
-37
lines changed

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import com.sksamuel.aedile.core.LoadingCache
44
import io.github.oshai.kotlinlogging.KotlinLogging.logger
55
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.ActionCoords
66
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.prettyPrint
7-
import io.github.typesafegithub.workflows.mavenbinding.Artifact
87
import io.github.typesafegithub.workflows.mavenbinding.JarArtifact
98
import io.github.typesafegithub.workflows.mavenbinding.TextArtifact
9+
import io.github.typesafegithub.workflows.mavenbinding.VersionArtifacts
1010
import io.ktor.http.ContentType
1111
import io.ktor.http.HttpStatusCode
1212
import io.ktor.server.application.ApplicationCall
@@ -27,7 +27,7 @@ import kotlinx.coroutines.launch
2727

2828
private val logger = logger { }
2929

30-
typealias CachedVersionArtifact = Map<String, Artifact>?
30+
typealias CachedVersionArtifact = VersionArtifacts?
3131

3232
private val prefetchScope = CoroutineScope(Dispatchers.IO)
3333

@@ -67,7 +67,7 @@ private fun Route.headArtifact(
6767

6868
val file = call.parameters["file"] ?: return@head call.respondNotFound()
6969

70-
if (file in bindingArtifacts) {
70+
if (file in bindingArtifacts.files) {
7171
call.respondText(text = "Exists", status = HttpStatusCode.OK)
7272
} else {
7373
call.respondNotFound()
@@ -89,7 +89,7 @@ private fun Route.getArtifact(
8989

9090
val file = call.parameters["file"] ?: return@get call.respondNotFound()
9191

92-
val artifact = bindingArtifacts[file] ?: return@get call.respondNotFound()
92+
val artifact = bindingArtifacts.files[file] ?: return@get call.respondNotFound()
9393

9494
when (artifact) {
9595
is TextArtifact -> call.respondText(text = artifact.data())
@@ -112,7 +112,7 @@ internal fun prefetchBindingArtifacts(
112112
private suspend fun ApplicationCall.toBindingArtifacts(
113113
refresh: Boolean,
114114
bindingsCache: LoadingCache<ActionCoords, CachedVersionArtifact>,
115-
): Map<String, Artifact>? {
115+
): VersionArtifacts? {
116116
val actionCoords = parameters.extractActionCoords(extractVersion = true)
117117

118118
logger.info { "➡️ Requesting ${actionCoords.prettyPrint}" }

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import com.sksamuel.aedile.core.asLoadingCache
66
import com.sksamuel.aedile.core.refreshAfterWrite
77
import io.github.oshai.kotlinlogging.KotlinLogging.logger
88
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.ActionCoords
9-
import io.github.typesafegithub.workflows.mavenbinding.Artifact
9+
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
@@ -59,7 +59,7 @@ fun main() {
5959
}
6060

6161
fun Application.appModule(
62-
buildVersionArtifacts: (ActionCoords) -> Map<String, Artifact>?,
62+
buildVersionArtifacts: (ActionCoords) -> VersionArtifacts?,
6363
buildPackageArtifacts: suspend (ActionCoords, String, (Collection<ActionCoords>) -> Unit) -> Map<String, String>,
6464
getGithubAuthToken: () -> String,
6565
) {
@@ -76,7 +76,7 @@ fun Application.appModule(
7676
}
7777

7878
private fun buildBindingsCache(
79-
buildVersionArtifacts: (ActionCoords) -> Map<String, Artifact>?,
79+
buildVersionArtifacts: (ActionCoords) -> VersionArtifacts?,
8080
): LoadingCache<ActionCoords, CachedVersionArtifact> =
8181
Caffeine
8282
.newBuilder()

jit-binding-server/src/test/kotlin/io/github/typesafegithub/workflows/jitbindingserver/ArtifactRoutesTest.kt

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

33
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.ActionCoords
44
import io.github.typesafegithub.workflows.mavenbinding.TextArtifact
5+
import io.github.typesafegithub.workflows.mavenbinding.VersionArtifacts
56
import io.kotest.core.spec.style.FunSpec
67
import io.kotest.matchers.shouldBe
78
import io.ktor.client.request.get
@@ -21,7 +22,9 @@ class ArtifactRoutesTest :
2122
application {
2223
appModule(
2324
buildVersionArtifacts = {
24-
mapOf("some-action-v4.pom" to TextArtifact { "Some POM contents" })
25+
VersionArtifacts(
26+
files = mapOf("some-action-v4.pom" to TextArtifact { "Some POM contents" }),
27+
)
2528
},
2629
// Irrelevant for these tests.
2730
buildPackageArtifacts = { _, _, _ -> emptyMap() },
@@ -81,10 +84,12 @@ class ArtifactRoutesTest :
8184
test("when binding generation fails and then succeeds, and two requests are made") {
8285
testApplication {
8386
// Given
84-
val mockBuildVersionArtifacts = mockk<(ActionCoords) -> Map<String, TextArtifact>?>()
87+
val mockBuildVersionArtifacts = mockk<(ActionCoords) -> VersionArtifacts?>()
8588
every { mockBuildVersionArtifacts(any()) } throws
8689
Exception("An internal error occurred!") andThen
87-
mapOf("some-action-v4.pom" to TextArtifact { "Some POM contents" })
90+
VersionArtifacts(
91+
files = mapOf("some-action-v4.pom" to TextArtifact { "Some POM contents" }),
92+
)
8893
application {
8994
appModule(
9095
buildVersionArtifacts = mockBuildVersionArtifacts,

jit-binding-server/src/test/kotlin/io/github/typesafegithub/workflows/jitbindingserver/MetadataRoutesTest.kt

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.github.typesafegithub.workflows.jitbindingserver
22

33
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.ActionCoords
4+
import io.github.typesafegithub.workflows.mavenbinding.VersionArtifacts
45
import io.kotest.core.spec.style.FunSpec
56
import io.kotest.matchers.shouldBe
67
import io.ktor.client.request.get
@@ -24,7 +25,11 @@ class MetadataRoutesTest :
2425
},
2526
getGithubAuthToken = { "some-token" },
2627
// Irrelevant for these tests.
27-
buildVersionArtifacts = { emptyMap() },
28+
buildVersionArtifacts = {
29+
VersionArtifacts(
30+
files = emptyMap(),
31+
)
32+
},
2833
)
2934
}
3035

@@ -47,7 +52,11 @@ class MetadataRoutesTest :
4752
},
4853
getGithubAuthToken = { "some-token" },
4954
// Irrelevant for these tests.
50-
buildVersionArtifacts = { emptyMap() },
55+
buildVersionArtifacts = {
56+
VersionArtifacts(
57+
files = emptyMap(),
58+
)
59+
},
5160
)
5261
}
5362

@@ -69,7 +78,11 @@ class MetadataRoutesTest :
6978
},
7079
getGithubAuthToken = { "some-token" },
7180
// Irrelevant for these tests.
72-
buildVersionArtifacts = { emptyMap() },
81+
buildVersionArtifacts = {
82+
VersionArtifacts(
83+
files = emptyMap(),
84+
)
85+
},
7386
)
7487
}
7588

@@ -100,7 +113,11 @@ class MetadataRoutesTest :
100113
buildPackageArtifacts = mockBuildPackageArtifacts,
101114
getGithubAuthToken = { "some-token" },
102115
// Irrelevant for these tests.
103-
buildVersionArtifacts = { emptyMap() },
116+
buildVersionArtifacts = {
117+
VersionArtifacts(
118+
files = emptyMap(),
119+
)
120+
},
104121
)
105122
}
106123

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

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ data class JarArtifact(
1212
val data: () -> ByteArray,
1313
) : Artifact
1414

15-
fun buildVersionArtifacts(actionCoords: ActionCoords): Map<String, Artifact>? {
15+
data class VersionArtifacts(
16+
val files: Map<String, Artifact>,
17+
)
18+
19+
fun buildVersionArtifacts(actionCoords: ActionCoords): VersionArtifacts? {
1620
with(actionCoords) {
1721
val jars = buildJars() ?: return null
1822
val pom = buildPomFile()
@@ -40,27 +44,30 @@ fun buildVersionArtifacts(actionCoords: ActionCoords): Map<String, Artifact>? {
4044
sourcesJarSha512Checksum,
4145
)
4246
}
43-
return mapOf(
44-
"$mavenName-$version.jar" to JarArtifact(jars.mainJar),
45-
"$mavenName-$version.jar.md5" to TextArtifact { mainJarMd5Checksum },
46-
"$mavenName-$version.jar.sha1" to TextArtifact { mainJarSha1Checksum },
47-
"$mavenName-$version.jar.sha256" to TextArtifact { mainJarSha256Checksum },
48-
"$mavenName-$version.jar.sha512" to TextArtifact { mainJarSha512Checksum },
49-
"$mavenName-$version-sources.jar" to JarArtifact(jars.sourcesJar),
50-
"$mavenName-$version-sources.jar.md5" to TextArtifact { sourcesJarMd5Checksum },
51-
"$mavenName-$version-sources.jar.sha1" to TextArtifact { sourcesJarSha1Checksum },
52-
"$mavenName-$version-sources.jar.sha256" to TextArtifact { sourcesJarSha256Checksum },
53-
"$mavenName-$version-sources.jar.sha512" to TextArtifact { sourcesJarSha512Checksum },
54-
"$mavenName-$version.pom" to TextArtifact { pom },
55-
"$mavenName-$version.pom.md5" to TextArtifact { pom.md5Checksum() },
56-
"$mavenName-$version.pom.sha1" to TextArtifact { pom.sha1Checksum() },
57-
"$mavenName-$version.pom.sha256" to TextArtifact { pom.sha256Checksum() },
58-
"$mavenName-$version.pom.sha512" to TextArtifact { pom.sha512Checksum() },
59-
"$mavenName-$version.module" to TextArtifact { module },
60-
"$mavenName-$version.module.md5" to TextArtifact { module.md5Checksum() },
61-
"$mavenName-$version.module.sha1" to TextArtifact { module.sha1Checksum() },
62-
"$mavenName-$version.module.sha256" to TextArtifact { module.sha256Checksum() },
63-
"$mavenName-$version.module.sha512" to TextArtifact { module.sha512Checksum() },
47+
return VersionArtifacts(
48+
files =
49+
mapOf(
50+
"$mavenName-$version.jar" to JarArtifact(jars.mainJar),
51+
"$mavenName-$version.jar.md5" to TextArtifact { mainJarMd5Checksum },
52+
"$mavenName-$version.jar.sha1" to TextArtifact { mainJarSha1Checksum },
53+
"$mavenName-$version.jar.sha256" to TextArtifact { mainJarSha256Checksum },
54+
"$mavenName-$version.jar.sha512" to TextArtifact { mainJarSha512Checksum },
55+
"$mavenName-$version-sources.jar" to JarArtifact(jars.sourcesJar),
56+
"$mavenName-$version-sources.jar.md5" to TextArtifact { sourcesJarMd5Checksum },
57+
"$mavenName-$version-sources.jar.sha1" to TextArtifact { sourcesJarSha1Checksum },
58+
"$mavenName-$version-sources.jar.sha256" to TextArtifact { sourcesJarSha256Checksum },
59+
"$mavenName-$version-sources.jar.sha512" to TextArtifact { sourcesJarSha512Checksum },
60+
"$mavenName-$version.pom" to TextArtifact { pom },
61+
"$mavenName-$version.pom.md5" to TextArtifact { pom.md5Checksum() },
62+
"$mavenName-$version.pom.sha1" to TextArtifact { pom.sha1Checksum() },
63+
"$mavenName-$version.pom.sha256" to TextArtifact { pom.sha256Checksum() },
64+
"$mavenName-$version.pom.sha512" to TextArtifact { pom.sha512Checksum() },
65+
"$mavenName-$version.module" to TextArtifact { module },
66+
"$mavenName-$version.module.md5" to TextArtifact { module.md5Checksum() },
67+
"$mavenName-$version.module.sha1" to TextArtifact { module.sha1Checksum() },
68+
"$mavenName-$version.module.sha256" to TextArtifact { module.sha256Checksum() },
69+
"$mavenName-$version.module.sha512" to TextArtifact { module.sha512Checksum() },
70+
),
6471
)
6572
}
6673
}

0 commit comments

Comments
 (0)