[+] Maimai data broker

pull/131/head
Azalea 2025-03-11 02:48:56 -04:00
parent 5375c3c1fa
commit 9b7f50aebb
1 changed files with 43 additions and 12 deletions

View File

@ -5,27 +5,39 @@ import icu.samnyan.aqua.sega.chusan.model.request.UpsertUserAll
import icu.samnyan.aqua.sega.chusan.model.userdata.UserActivity
import icu.samnyan.aqua.sega.chusan.model.userdata.UserItem
import icu.samnyan.aqua.sega.chusan.model.userdata.UserMusicDetail
import icu.samnyan.aqua.sega.util.jackson.BasicMapper
import icu.samnyan.aqua.sega.util.jackson.IMapper
import icu.samnyan.aqua.sega.util.jackson.StringMapper
interface DataBroker {
fun pull(): String
}
abstract class DataBroker(
val allNet: AllNetClient,
val log: (String) -> Unit,
) {
abstract val mapper: IMapper
abstract val url: String
class ChusanDataBroker(val allNet: AllNetClient, val log: (String) -> Unit): DataBroker {
val mapper = StringMapper()
val url by lazy { "${allNet.gameUrl.ensureEndingSlash()}ChuniServlet" }
inline fun <reified T> String.get(key: String, data: JDict) = "$url/$this".request()
inline fun <reified T> String.get(key: String, data: JDict): T = "$url/$this".request()
.postZ(mapper.write(data))
.bodyMaybeZ()
.jsonMap()[key]
.let { mapper.convert<T>(it) }
.also {
?.let { mapper.convert<T>(it) }
?.also {
if (it is List<*>) log("$this: ${it.size}")
else log("$this")
} ?: throw NullPointerException("$this")
abstract fun pull(): String
fun push(data: String) {
log("Pushing data")
"UpsertUserAll".request().postZ(data).bodyMaybeZ().also { log(it) }
}
}
class ChusanDataBroker(allNet: AllNetClient, log: (String) -> Unit): DataBroker(allNet, log) {
override val mapper = StringMapper()
override val url by lazy { "${allNet.gameUrl.ensureEndingSlash()}ChuniServlet" }
class UserMusicWrapper(var userMusicDetailList: List<UserMusicDetail>)
@ -60,3 +72,22 @@ class ChusanDataBroker(val allNet: AllNetClient, val log: (String) -> Unit): Dat
})
}
}
class MaimaiDataBroker(allNet: AllNetClient, log: (String) -> Unit): DataBroker(allNet, log) {
override val mapper = BasicMapper()
override val url by lazy { "${allNet.gameUrl.ensureEndingSlash()}Maimai2Servlet" }
override fun pull(): String {
log("Game URL: ${allNet.gameUrl}")
log("User ID: ${allNet.userId}")
val userId = mapOf("userId" to allNet.userId)
val paged = userId + mapOf("nextIndex" to 0, "maxCount" to 10000000)
return UpsertUserAll().apply {
userData = ls("GetUserDataApi".get("userData", userId))
}.toJson()
}
}