Compare commits
1 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
cfd7693689 |
|
|
@ -29,6 +29,7 @@ private val Log = KotlinLogging.logger { }
|
||||||
class XsClient : KoinComponent {
|
class XsClient : KoinComponent {
|
||||||
private val httpClient by inject<HttpClient>()
|
private val httpClient by inject<HttpClient>()
|
||||||
|
|
||||||
|
|
||||||
suspend fun waitFor(task: XsTask): WaitForResponse {
|
suspend fun waitFor(task: XsTask): WaitForResponse {
|
||||||
Log.info { "Wait for competition: $task" }
|
Log.info { "Wait for competition: $task" }
|
||||||
val response = httpClient.get {
|
val response = httpClient.get {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
plugins {
|
||||||
|
kotlin("plugin.serialization") version embeddedKotlinVersion
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation("com.akuleshov7:ktoml-core:0.5.1")
|
||||||
|
implementation("com.akuleshov7:ktoml-file:0.5.1")
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,77 @@
|
||||||
|
package de.itkl.xtractionstudio
|
||||||
|
|
||||||
|
import kotlinx.serialization.SerialName
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
import kotlinx.serialization.encodeToString
|
||||||
|
import kotlinx.serialization.json.Json
|
||||||
|
|
||||||
|
data class XsEnvironment(
|
||||||
|
val http: Http,
|
||||||
|
val data: Data,
|
||||||
|
val build: Build,
|
||||||
|
@SerialName("xs")
|
||||||
|
val xs: XS,
|
||||||
|
val env: Map<String, Environment>,
|
||||||
|
val credentials: Map<String, Credentials>
|
||||||
|
) {
|
||||||
|
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class Build(
|
||||||
|
val worker: String
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class Http(
|
||||||
|
val proxy: String,
|
||||||
|
@SerialName("request-timeout")
|
||||||
|
val requestTimeout: String
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class Data(
|
||||||
|
@SerialName("corpus-dir")
|
||||||
|
val corpusDir: String
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class XS(
|
||||||
|
@SerialName("concurrency_limit")
|
||||||
|
val concurrencyLimit: Int
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class Environment(
|
||||||
|
@SerialName("user")
|
||||||
|
val user: String,
|
||||||
|
@SerialName("backend-url")
|
||||||
|
val backendUrl: String
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class Credentials(
|
||||||
|
val login: String,
|
||||||
|
val password: String
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class XsEnvironmentInternal(
|
||||||
|
val http: XsEnvironment.Http,
|
||||||
|
val data: XsEnvironment.Data,
|
||||||
|
val build: XsEnvironment.Build,
|
||||||
|
@SerialName("xs")
|
||||||
|
val xs: XsEnvironment.XS,
|
||||||
|
val env: Map<String, Map<String, String>>,
|
||||||
|
val credentials: Map<String, Map<String, String>>
|
||||||
|
) {
|
||||||
|
|
||||||
|
val environmentNames get() = env.keys
|
||||||
|
fun environment(name: String): XsEnvironment.Environment? {
|
||||||
|
return env[name]?.let {
|
||||||
|
val json = Json.encodeToString(it)
|
||||||
|
Json.decodeFromString(json)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
package de.itkl.xtractionstudio
|
||||||
|
|
||||||
|
import com.akuleshov7.ktoml.file.TomlFileReader
|
||||||
|
import kotlinx.serialization.DeserializationStrategy
|
||||||
|
import kotlinx.serialization.encodeToString
|
||||||
|
import kotlinx.serialization.json.Json
|
||||||
|
import java.nio.file.Path
|
||||||
|
|
||||||
|
class XsEnvironmentTomlProvider(private val path: Path) {
|
||||||
|
fun environment(): XsEnvironment {
|
||||||
|
val result = TomlFileReader.decodeFromFile(XsEnvironmentInternal.serializer(), path.toAbsolutePath().toString())
|
||||||
|
return XsEnvironment(
|
||||||
|
http = result.http,
|
||||||
|
data = result.data,
|
||||||
|
build = result.build,
|
||||||
|
xs = result.xs,
|
||||||
|
env = result.env.mapValues { (_, value) ->
|
||||||
|
mapToObject(XsEnvironment.Environment.serializer(), value)
|
||||||
|
},
|
||||||
|
credentials = result.credentials.mapValues { (_, value) ->
|
||||||
|
mapToObject(XsEnvironment.Credentials.serializer(), value)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
private fun <T: Any> mapToObject(deserializationStrategy: DeserializationStrategy<T>, map: Map<String, String>): T {
|
||||||
|
val json = Json.encodeToString(map)
|
||||||
|
return Json.decodeFromString(deserializationStrategy, json)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
package de.itkl.xtractionstudio
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test
|
||||||
|
import java.nio.file.Paths
|
||||||
|
|
||||||
|
class XsEnvironmentTomlProviderTest {
|
||||||
|
@Test
|
||||||
|
fun `can parse the toml`() {
|
||||||
|
val tomlPath = Paths.get("../../assets/environments.toml")
|
||||||
|
val environment = XsEnvironmentTomlProvider(tomlPath).environment()
|
||||||
|
println(environment)
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue