forked from openrs2/openrs2
parent
637e311a67
commit
11a43242b9
@ -0,0 +1,66 @@ |
||||
package org.openrs2.archive.jav |
||||
|
||||
import kotlinx.coroutines.Dispatchers |
||||
import kotlinx.coroutines.future.await |
||||
import kotlinx.coroutines.withContext |
||||
import org.openrs2.http.checkStatusCode |
||||
import java.io.BufferedReader |
||||
import java.net.URI |
||||
import java.net.http.HttpClient |
||||
import java.net.http.HttpRequest |
||||
import java.net.http.HttpResponse |
||||
|
||||
public data class JavConfig( |
||||
public val config: Map<String, String>, |
||||
public val params: Map<String, String>, |
||||
public val messages: Map<String, String> |
||||
) { |
||||
public companion object { |
||||
public suspend fun download(client: HttpClient, url: String): JavConfig { |
||||
val request = HttpRequest.newBuilder(URI(url)) |
||||
.GET() |
||||
.build() |
||||
|
||||
val response = client.sendAsync(request, HttpResponse.BodyHandlers.ofInputStream()).await() |
||||
response.checkStatusCode() |
||||
|
||||
return withContext(Dispatchers.IO) { |
||||
response.body().bufferedReader().use { reader -> |
||||
read(reader) |
||||
} |
||||
} |
||||
} |
||||
|
||||
public fun read(reader: BufferedReader): JavConfig { |
||||
val config = mutableMapOf<String, String>() |
||||
val params = mutableMapOf<String, String>() |
||||
val messages = mutableMapOf<String, String>() |
||||
|
||||
reader.lineSequence().map(String::trim).forEach { line -> |
||||
when { |
||||
line.startsWith("//") || line.startsWith("#") -> Unit |
||||
line.startsWith("msg=") -> { |
||||
val parts = line.substring("msg=".length).split("=", limit = 2) |
||||
if (parts.size == 2) { |
||||
messages[parts[0]] = parts[1] |
||||
} |
||||
} |
||||
line.startsWith("param=") -> { |
||||
val parts = line.substring("param=".length).split("=", limit = 2) |
||||
if (parts.size == 2) { |
||||
params[parts[0]] = parts[1] |
||||
} |
||||
} |
||||
else -> { |
||||
val parts = line.split("=", limit = 2) |
||||
if (parts.size == 2) { |
||||
config[parts[0]] = parts[1] |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
return JavConfig(config, params, messages) |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue