Added user search, improved api docs, improved replay compression by 20-25%, user-details allows userId and username

This commit is contained in:
nise.moe 2024-06-11 14:09:37 +02:00
parent ebaf4c82c5
commit 6ebddca877

View File

@ -9,6 +9,7 @@ import com.nisemoe.nise.osu.Mod
import com.nisemoe.nise.osu.OsuApi
import com.nisemoe.nise.service.AuthService
import com.nisemoe.nise.service.CompressReplay
import org.apache.commons.compress.compressors.lzma.LZMACompressorInputStream
import org.jooq.Condition
import org.jooq.DSLContext
import org.jooq.Record
@ -19,6 +20,7 @@ import org.nisemoe.mari.judgements.Judgement
import org.slf4j.LoggerFactory
import org.springframework.stereotype.Service
import java.time.LocalDateTime
import java.util.*
import kotlin.math.roundToInt
@Service
@ -64,6 +66,11 @@ class ScoreService(
)
}
private fun decompressData(replayString: String): ByteArray =
Base64.getDecoder().decode(replayString).inputStream().use { byteStream ->
LZMACompressorInputStream(byteStream).readBytes()
}
fun getReplayViewerData(replayId: Long): ReplayViewerData? {
val beatmapId = dslContext.select(SCORES.BEATMAP_ID)
.from(SCORES)
@ -83,6 +90,7 @@ class ScoreService(
val replayData = result.get(SCORES.REPLAY, ByteArray::class.java) ?: return null
val replay = CompressReplay.decompressReplayToString(replayData)
val replayDecoded = decompressData(replay)
var beatmapFile = result.get(BEATMAPS.BEATMAP_FILE, String::class.java)
if(beatmapFile == null) {
@ -103,7 +111,7 @@ class ScoreService(
return ReplayViewerData(
beatmap = beatmapFile,
replay = replay,
replay = String(replayDecoded, Charsets.UTF_8).trimEnd(','),
judgements = getJudgements(replayId),
mods = mods
)