|
|
|
package org.openrs2.archive.cache.nxt
|
|
|
|
|
|
|
|
import io.netty.buffer.ByteBuf
|
|
|
|
import kotlinx.coroutines.future.await
|
|
|
|
import org.openrs2.buffer.ByteBufBodyHandler
|
|
|
|
import org.openrs2.buffer.use
|
|
|
|
import org.openrs2.http.checkStatusCode
|
|
|
|
import java.net.URI
|
|
|
|
import java.net.http.HttpClient
|
|
|
|
import java.net.http.HttpRequest
|
|
|
|
import java.time.Duration
|
|
|
|
|
|
|
|
public class MusicStreamClient(
|
|
|
|
private val client: HttpClient,
|
|
|
|
private val byteBufBodyHandler: ByteBufBodyHandler,
|
|
|
|
private val origin: String
|
|
|
|
) {
|
|
|
|
public suspend fun request(archive: Int, group: Int, version: Int, checksum: Int, build: Int): ByteBuf {
|
|
|
|
val uri = URI("$origin/ms?m=0&a=$archive&k=$build&g=$group&c=$checksum&v=$version")
|
|
|
|
|
|
|
|
val request = HttpRequest.newBuilder(uri)
|
|
|
|
.GET()
|
|
|
|
.timeout(Duration.ofSeconds(30))
|
|
|
|
.build()
|
|
|
|
|
|
|
|
val response = client.sendAsync(request, byteBufBodyHandler).await()
|
|
|
|
response.body().use { buf ->
|
|
|
|
response.checkStatusCode()
|
|
|
|
return buf.retain()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|