mirror of
https://github.com/mamoe/mirai.git
synced 2025-02-03 16:53:48 +08:00
Adapt desensitize in StructureToStringTransformer
This commit is contained in:
parent
796df9b79f
commit
8b6b06ea3b
@ -11,6 +11,7 @@ package net.mamoe.mirai.internal.pipeline
|
||||
|
||||
import net.mamoe.mirai.internal.message.contextualBugReportException
|
||||
import net.mamoe.mirai.internal.network.components.NoticeProcessor
|
||||
import net.mamoe.mirai.internal.utils.structureToStringAndDesensitizeIfAvailable
|
||||
import net.mamoe.mirai.utils.*
|
||||
import java.io.Closeable
|
||||
import java.util.*
|
||||
@ -178,7 +179,7 @@ protected constructor(
|
||||
attributes: TypeSafeMap,
|
||||
) : AbstractProcessorPipelineContext<D, R>(attributes, traceLogging) {
|
||||
override suspend fun processAlso(data: D, attributes: TypeSafeMap): Collection<R> {
|
||||
traceLogging.info { "processAlso: data=$data" }
|
||||
traceLogging.info { "processAlso: data=${data.structureToStringAndDesensitizeIfAvailable()}" }
|
||||
return process(data, this.attributes + attributes).also {
|
||||
this.collected.data += it
|
||||
traceLogging.info { "processAlso: result=$it" }
|
||||
@ -195,7 +196,7 @@ protected constructor(
|
||||
): Unit = throw e
|
||||
|
||||
override suspend fun process(data: D, attributes: TypeSafeMap): Collection<R> {
|
||||
traceLogging.info { "process: data=$data" }
|
||||
traceLogging.info { "process: data=${data.structureToStringAndDesensitizeIfAvailable()}" }
|
||||
val context = createContext(attributes)
|
||||
|
||||
val diff = if (traceLogging.isEnabled) CollectionDiff<R>() else null
|
||||
|
@ -26,6 +26,16 @@ internal fun Any?.structureToStringIfAvailable(): String? {
|
||||
} else null
|
||||
}
|
||||
|
||||
|
||||
internal fun Any?.structureToStringAndDesensitize(): String =
|
||||
StructureToStringTransformer.instance.transformAndDesensitize(this)
|
||||
|
||||
internal fun Any?.structureToStringAndDesensitizeIfAvailable(): String? {
|
||||
return if (StructureToStringTransformer.available) {
|
||||
StructureToStringTransformer.instance.transformAndDesensitize(this)
|
||||
} else null
|
||||
}
|
||||
|
||||
private val SoutvLogger: MiraiLogger by lazy {
|
||||
MiraiLogger.Factory.create(
|
||||
StructureToStringTransformer::class,
|
||||
@ -37,12 +47,15 @@ internal fun Any?.printStructure(name: String = "unnamed") {
|
||||
return SoutvLogger.debug { "$name = ${this.structureToString()}" }
|
||||
}
|
||||
|
||||
internal fun interface StructureToStringTransformer {
|
||||
internal interface StructureToStringTransformer {
|
||||
fun transform(any: Any?): String
|
||||
|
||||
fun transformAndDesensitize(any: Any?): String
|
||||
|
||||
companion object {
|
||||
private class ObjectToStringStructureToStringTransformer : StructureToStringTransformer {
|
||||
override fun transform(any: Any?): String = any.toString()
|
||||
override fun transformAndDesensitize(any: Any?): String = any.toString()
|
||||
}
|
||||
|
||||
val instance by lazy {
|
||||
|
@ -165,7 +165,7 @@ private val format = Yaml {
|
||||
}
|
||||
|
||||
|
||||
private class DesensitizationVisitor(
|
||||
internal class DesensitizationVisitor(
|
||||
private val desensitizer: Desensitizer,
|
||||
) : ValueDescTransformerNotNull<Nothing?>() {
|
||||
override fun visitValue(desc: ValueDesc, data: Nothing?): ValueDesc {
|
||||
|
@ -10,6 +10,7 @@
|
||||
package net.mamoe.mirai.internal.utils
|
||||
|
||||
import kotlinx.serialization.Transient
|
||||
import net.mamoe.mirai.internal.testFramework.desensitizer.Desensitizer
|
||||
import net.mamoe.mirai.utils.toUHexString
|
||||
import java.lang.reflect.Modifier
|
||||
import kotlin.reflect.KClass
|
||||
@ -20,6 +21,7 @@ import kotlin.reflect.jvm.javaField
|
||||
|
||||
internal class StructureToStringTransformerLegacy : StructureToStringTransformer {
|
||||
override fun transform(any: Any?): String = any._miraiContentToString()
|
||||
override fun transformAndDesensitize(any: Any?): String = Desensitizer.desensitize(any._miraiContentToString())
|
||||
|
||||
private val indent: String = " ".repeat(4)
|
||||
|
||||
|
@ -15,6 +15,8 @@ import net.mamoe.mirai.internal.testFramework.codegen.descriptors.transform
|
||||
import net.mamoe.mirai.internal.testFramework.codegen.removeDefaultValues
|
||||
import net.mamoe.mirai.internal.testFramework.codegen.visitors.OptimizeByteArrayAsHexStringTransformer
|
||||
import net.mamoe.mirai.internal.testFramework.codegen.visitors.renderToString
|
||||
import net.mamoe.mirai.internal.testFramework.desensitizer.DesensitizationVisitor
|
||||
import net.mamoe.mirai.internal.testFramework.desensitizer.Desensitizer
|
||||
|
||||
internal class StructureToStringTransformerNew : StructureToStringTransformer {
|
||||
private val legacy = StructureToStringTransformerLegacy()
|
||||
@ -26,4 +28,15 @@ internal class StructureToStringTransformerNew : StructureToStringTransformer {
|
||||
.removeDefaultValues()
|
||||
.renderToString()
|
||||
}.getOrNull() ?: legacy.transform(any)
|
||||
|
||||
override fun transformAndDesensitize(any: Any?): String {
|
||||
val desensitizer = Desensitizer.local
|
||||
return kotlin.runCatching {
|
||||
ValueDescAnalyzer.analyze(any)
|
||||
.transform(OptimizeByteArrayAsHexStringTransformer())
|
||||
.removeDefaultValues()
|
||||
.transform(DesensitizationVisitor(desensitizer))
|
||||
.renderToString()
|
||||
}.getOrNull() ?: legacy.transform(any)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user