mirror of https://github.com/hykilpikonna/AquaDX
[+] Maimai data broker
parent
5375c3c1fa
commit
9b7f50aebb
|
@ -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.UserActivity
|
||||||
import icu.samnyan.aqua.sega.chusan.model.userdata.UserItem
|
import icu.samnyan.aqua.sega.chusan.model.userdata.UserItem
|
||||||
import icu.samnyan.aqua.sega.chusan.model.userdata.UserMusicDetail
|
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
|
import icu.samnyan.aqua.sega.util.jackson.StringMapper
|
||||||
|
|
||||||
|
|
||||||
interface DataBroker {
|
abstract class DataBroker(
|
||||||
fun pull(): String
|
val allNet: AllNetClient,
|
||||||
}
|
val log: (String) -> Unit,
|
||||||
|
) {
|
||||||
|
abstract val mapper: IMapper
|
||||||
|
abstract val url: String
|
||||||
|
|
||||||
|
inline fun <reified T> String.get(key: String, data: JDict): T = "$url/$this".request()
|
||||||
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()
|
|
||||||
.postZ(mapper.write(data))
|
.postZ(mapper.write(data))
|
||||||
.bodyMaybeZ()
|
.bodyMaybeZ()
|
||||||
.jsonMap()[key]
|
.jsonMap()[key]
|
||||||
.let { mapper.convert<T>(it) }
|
?.let { mapper.convert<T>(it) }
|
||||||
.also {
|
?.also {
|
||||||
if (it is List<*>) log("✅ $this: ${it.size}")
|
if (it is List<*>) log("✅ $this: ${it.size}")
|
||||||
else log("✅ $this")
|
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>)
|
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()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue