Skip to content

Commit 5fde7a9

Browse files
authored
chore(abg): lift creation of default HTTP client to generateBindings fun (#2164)
Part of #2160. I'd like to intercept calls to GitHub on the bindings server level, and for this I'd like to use [HttpSend ktor plugn](https://ktor.io/docs/client-http-send.html). To use it, I need to inject the client augmented with this, and I want to do it from the bindings server.
1 parent c9e9da2 commit 5fde7a9

File tree

5 files changed

+12
-12
lines changed

5 files changed

+12
-12
lines changed

action-binding-generator/api/action-binding-generator.api

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,8 @@ public final class io/github/typesafegithub/workflows/actionbindinggenerator/gen
102102
}
103103

104104
public final class io/github/typesafegithub/workflows/actionbindinggenerator/generation/GenerationKt {
105-
public static final fun generateBinding (Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionCoords;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/MetadataRevision;Lio/github/typesafegithub/workflows/actionbindinggenerator/metadata/Metadata;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionTypings;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
106-
public static synthetic fun generateBinding$default (Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionCoords;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/MetadataRevision;Lio/github/typesafegithub/workflows/actionbindinggenerator/metadata/Metadata;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionTypings;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
105+
public static final fun generateBinding (Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionCoords;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/MetadataRevision;Lio/github/typesafegithub/workflows/actionbindinggenerator/metadata/Metadata;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionTypings;Lio/ktor/client/HttpClient;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
106+
public static synthetic fun generateBinding$default (Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionCoords;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/MetadataRevision;Lio/github/typesafegithub/workflows/actionbindinggenerator/metadata/Metadata;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionTypings;Lio/ktor/client/HttpClient;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
107107
}
108108

109109
public final class io/github/typesafegithub/workflows/actionbindinggenerator/metadata/Input {
@@ -177,7 +177,6 @@ public final class io/github/typesafegithub/workflows/actionbindinggenerator/met
177177

178178
public final class io/github/typesafegithub/workflows/actionbindinggenerator/metadata/MetadataReadingKt {
179179
public static final fun fetchMetadata (Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionCoords;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/MetadataRevision;Lio/ktor/client/HttpClient;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
180-
public static synthetic fun fetchMetadata$default (Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/ActionCoords;Lio/github/typesafegithub/workflows/actionbindinggenerator/domain/MetadataRevision;Lio/ktor/client/HttpClient;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object;
181180
}
182181

183182
public final class io/github/typesafegithub/workflows/actionbindinggenerator/metadata/Output {

action-binding-generator/src/main/kotlin/io/github/typesafegithub/workflows/actionbindinggenerator/generation/Generation.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ import io.github.typesafegithub.workflows.actionbindinggenerator.typing.provideT
4040
import io.github.typesafegithub.workflows.actionbindinggenerator.utils.removeTrailingWhitespacesForEachLine
4141
import io.github.typesafegithub.workflows.actionbindinggenerator.utils.toCamelCase
4242
import io.github.typesafegithub.workflows.actionbindinggenerator.utils.toKotlinPackageName
43+
import io.ktor.client.HttpClient
44+
import io.ktor.client.engine.cio.CIO
4345

4446
public data class ActionBinding(
4547
val kotlinCode: String,
@@ -69,11 +71,13 @@ public suspend fun ActionCoords.generateBinding(
6971
metadataRevision: MetadataRevision,
7072
metadata: Metadata? = null,
7173
inputTypings: ActionTypings? = null,
74+
httpClient: HttpClient = HttpClient(CIO),
7275
): List<ActionBinding> {
73-
val metadataResolved = metadata ?: this.fetchMetadata(metadataRevision) ?: return emptyList()
76+
val metadataResolved =
77+
metadata ?: this.fetchMetadata(metadataRevision, httpClient = httpClient) ?: return emptyList()
7478
val metadataProcessed = metadataResolved.removeDeprecatedInputsIfNameClash()
7579

76-
val inputTypingsResolved = inputTypings ?: this.provideTypes(metadataRevision)
80+
val inputTypingsResolved = inputTypings ?: this.provideTypes(metadataRevision, httpClient = httpClient)
7781

7882
val packageName = owner.toKotlinPackageName()
7983
val className = this.buildActionClassName()

action-binding-generator/src/main/kotlin/io/github/typesafegithub/workflows/actionbindinggenerator/metadata/MetadataReading.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import io.github.typesafegithub.workflows.actionbindinggenerator.domain.Metadata
88
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.NewestForVersion
99
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.subName
1010
import io.ktor.client.HttpClient
11-
import io.ktor.client.engine.cio.CIO
1211
import io.ktor.client.request.get
1312
import io.ktor.client.statement.bodyAsText
1413
import io.ktor.http.HttpStatusCode
@@ -49,11 +48,9 @@ private fun ActionCoords.actionYmlUrl(gitRef: String) =
4948
private fun ActionCoords.actionYamlUrl(gitRef: String) =
5049
"https://raw.githubusercontent.com/$owner/$name/$gitRef$subName/action.yaml"
5150

52-
private val defaultHttpClient = HttpClient(CIO)
53-
5451
public suspend fun ActionCoords.fetchMetadata(
5552
metadataRevision: MetadataRevision,
56-
httpClient: HttpClient = defaultHttpClient,
53+
httpClient: HttpClient,
5754
): Metadata? {
5855
val gitRef =
5956
when (metadataRevision) {

action-binding-generator/src/main/kotlin/io/github/typesafegithub/workflows/actionbindinggenerator/typing/TypesProviding.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import io.github.typesafegithub.workflows.actionbindinggenerator.domain.TypingAc
1515
import io.github.typesafegithub.workflows.actionbindinggenerator.domain.subName
1616
import io.github.typesafegithub.workflows.actionbindinggenerator.utils.toPascalCase
1717
import io.ktor.client.HttpClient
18-
import io.ktor.client.engine.cio.CIO
1918
import io.ktor.client.request.get
2019
import io.ktor.client.statement.bodyAsText
2120
import io.ktor.http.HttpStatusCode
@@ -24,11 +23,10 @@ import kotlinx.serialization.Serializable
2423
import kotlinx.serialization.decodeFromString
2524

2625
private val logger = logger { }
27-
private val defaultHttpClient = HttpClient(CIO)
2826

2927
internal suspend fun ActionCoords.provideTypes(
3028
metadataRevision: MetadataRevision,
31-
httpClient: HttpClient = defaultHttpClient,
29+
httpClient: HttpClient,
3230
): ActionTypings =
3331
(
3432
this.fetchTypingMetadata(metadataRevision, httpClient)

jit-binding-server/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ dependencies {
1414
implementation("io.ktor:ktor-server-call-logging")
1515
implementation("io.ktor:ktor-server-call-id")
1616
implementation("io.ktor:ktor-server-metrics-micrometer")
17+
implementation("io.ktor:ktor-client-core")
18+
implementation("io.ktor:ktor-client-cio")
1719
implementation("io.micrometer:micrometer-registry-prometheus:1.15.5")
1820

1921
implementation("com.sksamuel.aedile:aedile-core:3.0.1")

0 commit comments

Comments
 (0)