mirror of
https://github.com/whitechi73/OpenShamrock.git
synced 2024-08-14 13:12:17 +08:00
Shamrock
: Remove outdated dependencies and add new APIs
This commit is contained in:
parent
c39c2a172f
commit
c7265ba628
1
annotations/.gitignore
vendored
Normal file
1
annotations/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/build
|
9
annotations/build.gradle.kts
Normal file
9
annotations/build.gradle.kts
Normal file
@ -0,0 +1,9 @@
|
||||
plugins {
|
||||
id("java-library")
|
||||
id("org.jetbrains.kotlin.jvm")
|
||||
}
|
||||
|
||||
java {
|
||||
sourceCompatibility = JavaVersion.VERSION_17
|
||||
targetCompatibility = JavaVersion.VERSION_17
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package moe.fuqiuluo.symbols
|
||||
|
||||
@Retention(AnnotationRetention.SOURCE)
|
||||
@Target(AnnotationTarget.CLASS)
|
||||
annotation class OneBotHandler(
|
||||
val actionName: String,
|
||||
val alias: Array<String> = []
|
||||
)
|
@ -4,7 +4,7 @@ import java.io.ByteArrayOutputStream
|
||||
plugins {
|
||||
id("com.android.application")
|
||||
id("org.jetbrains.kotlin.android")
|
||||
kotlin("plugin.serialization") version "1.8.10"
|
||||
kotlin("plugin.serialization") version "1.9.21"
|
||||
}
|
||||
|
||||
android {
|
||||
@ -17,7 +17,7 @@ android {
|
||||
minSdk = 27
|
||||
targetSdk = 34
|
||||
versionCode = getVersionCode()
|
||||
versionName = "1.0.7" + ".r${getGitCommitCount()}." + getVersionName()
|
||||
versionName = "1.0.8" + ".r${getGitCommitCount()}." + getVersionName()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
vectorDrawables {
|
||||
@ -92,7 +92,7 @@ android {
|
||||
compose = true
|
||||
}
|
||||
composeOptions {
|
||||
kotlinCompilerExtensionVersion = "1.4.3"
|
||||
kotlinCompilerExtensionVersion = "1.5.4"
|
||||
}
|
||||
packaging {
|
||||
jniLibs {
|
||||
@ -187,10 +187,13 @@ fun getVersionName(): String {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation("androidx.core:core-ktx:1.9.0")
|
||||
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.1")
|
||||
implementation("androidx.activity:activity-compose:1.7.2")
|
||||
implementation(platform("androidx.compose:compose-bom:2023.06.01"))
|
||||
val composeBom = platform("androidx.compose:compose-bom:2023.10.01")
|
||||
implementation(composeBom)
|
||||
|
||||
DEPENDENCY_ANDROIDX.forEach {
|
||||
implementation(it)
|
||||
}
|
||||
|
||||
implementation("androidx.compose.ui:ui")
|
||||
implementation("androidx.compose.ui:ui-graphics")
|
||||
implementation("androidx.compose.ui:ui-tooling-preview")
|
||||
@ -199,31 +202,26 @@ dependencies {
|
||||
implementation("com.google.accompanist:accompanist-pager:0.31.5+")
|
||||
//noinspection GradleDynamicVersion
|
||||
implementation("com.google.accompanist:accompanist-systemuicontroller:0.31.5+")
|
||||
//noinspection GradleDynamicVersion useless
|
||||
// implementation("androidx.constraintlayout:constraintlayout-compose:1.1.0+")
|
||||
implementation("io.coil-kt:coil:2.4.0")
|
||||
implementation("io.coil-kt:coil-compose:2.4.0")
|
||||
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-io-jvm:0.1.16")
|
||||
|
||||
val ktorVersion = "2.3.3"
|
||||
implementation("io.ktor:ktor-server-core:$ktorVersion")
|
||||
implementation("io.ktor:ktor-server-host-common:$ktorVersion")
|
||||
implementation("io.ktor:ktor-server-status-pages:$ktorVersion")
|
||||
implementation("io.ktor:ktor-server-netty:$ktorVersion")
|
||||
implementation("io.ktor:ktor-server-content-negotiation:$ktorVersion")
|
||||
implementation("io.ktor:ktor-client-core:$ktorVersion")
|
||||
implementation("io.ktor:ktor-client-cio:$ktorVersion")
|
||||
implementation("io.ktor:ktor-client-content-negotiation:$ktorVersion")
|
||||
implementation("io.ktor:ktor-serialization-kotlinx-json:$ktorVersion")
|
||||
//implementation("io.ktor:ktor-serialization-kotlinx-protobuf:$ktorVersion")
|
||||
implementation(kotlinx("io-jvm", "0.1.16"))
|
||||
implementation(ktor("server", "core"))
|
||||
implementation(ktor("server", "host-common"))
|
||||
implementation(ktor("server", "status-pages"))
|
||||
implementation(ktor("server", "netty"))
|
||||
implementation(ktor("server", "content-negotiation"))
|
||||
implementation(ktor("client", "core"))
|
||||
implementation(ktor("client", "content-negotiation"))
|
||||
implementation(ktor("client", "cio"))
|
||||
implementation(ktor("serialization", "kotlinx-json"))
|
||||
|
||||
implementation(project(":xposed"))
|
||||
|
||||
testImplementation("junit:junit:4.13.2")
|
||||
androidTestImplementation("androidx.test.ext:junit:1.1.5")
|
||||
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
|
||||
androidTestImplementation(platform("androidx.compose:compose-bom:2023.06.01"))
|
||||
androidTestImplementation(platform("androidx.compose:compose-bom:2023.10.01"))
|
||||
androidTestImplementation("androidx.compose.ui:ui-test-junit4")
|
||||
debugImplementation("androidx.compose.ui:ui-tooling")
|
||||
debugImplementation("androidx.compose.ui:ui-test-manifest")
|
||||
|
@ -85,6 +85,7 @@ import moe.fuqiuluo.shamrock.ui.tools.getShamrockVersion
|
||||
class MainActivity : ComponentActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
setContent {
|
||||
CompositionLocalProvider(
|
||||
LocalIndication provides NoIndication
|
||||
|
@ -1,7 +1,6 @@
|
||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
plugins {
|
||||
id("com.android.application") version "8.2.0" apply false
|
||||
id("org.jetbrains.kotlin.android") version "1.8.10" apply false
|
||||
id("org.jetbrains.kotlin.android") version "1.9.20" apply false
|
||||
id("com.android.library") version "8.2.0" apply false
|
||||
//id("io.realm.kotlin") version "1.11.0" apply false
|
||||
}
|
10
buildSrc/build.gradle.kts
Normal file
10
buildSrc/build.gradle.kts
Normal file
@ -0,0 +1,10 @@
|
||||
plugins {
|
||||
kotlin("jvm") version "1.9.21"
|
||||
}
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
}
|
26
buildSrc/src/main/kotlin/Dependencies.kt
Normal file
26
buildSrc/src/main/kotlin/Dependencies.kt
Normal file
@ -0,0 +1,26 @@
|
||||
val DEPENDENCY_ANDROIDX = arrayOf(
|
||||
"androidx.core:core-ktx:1.12.0",
|
||||
"androidx.appcompat:appcompat:1.6.1",
|
||||
"com.google.android.material:material:1.11.0",
|
||||
"androidx.exifinterface:exifinterface:1.3.7",
|
||||
"androidx.lifecycle:lifecycle-runtime-ktx:2.6.1",
|
||||
"androidx.activity:activity-compose:1.7.2",
|
||||
)
|
||||
|
||||
const val DEPENDENCY_JSON5K = "io.github.xn32:json5k:0.3.0"
|
||||
const val DEPENDENCY_PROTOBUF = "com.google.protobuf:protobuf-java:3.24.0"
|
||||
const val DEPENDENCY_JAVA_WEBSOCKET = "org.java-websocket:Java-WebSocket:1.5.4"
|
||||
|
||||
fun room(name: String) = "androidx.room:room-$name:${Versions.roomVersion}"
|
||||
|
||||
fun kotlinx(name: String, version: String) = "org.jetbrains.kotlinx:kotlinx-$name:$version"
|
||||
|
||||
fun ktor(target: String, name: String): String {
|
||||
return "io.ktor:ktor-$target-$name:${Versions.ktorVersion}"
|
||||
}
|
||||
|
||||
object Versions {
|
||||
const val roomVersion = "2.5.0"
|
||||
|
||||
const val ktorVersion = "2.3.3"
|
||||
}
|
@ -22,3 +22,5 @@ kotlin.code.style=official
|
||||
# thereby reducing the size of the R class for that library
|
||||
android.nonTransitiveRClass=true
|
||||
android.default.buildFeatures.aidl=true
|
||||
kotlin.experimental.tryK2=true
|
||||
ksp.incremental=false
|
1
processor/.gitignore
vendored
Normal file
1
processor/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/build
|
18
processor/build.gradle.kts
Normal file
18
processor/build.gradle.kts
Normal file
@ -0,0 +1,18 @@
|
||||
plugins {
|
||||
kotlin("jvm")
|
||||
id("com.google.devtools.ksp") version "1.9.21-1.0.15"
|
||||
}
|
||||
|
||||
ksp {
|
||||
arg("autoserviceKsp.verify", "true")
|
||||
arg("autoserviceKsp.verbose", "true")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(project(":annotations"))
|
||||
implementation("com.google.auto.service:auto-service-annotations:1.1.1")
|
||||
implementation("com.google.devtools.ksp:symbol-processing-api:1.9.21-1.0.15")
|
||||
implementation("com.squareup:kotlinpoet:1.14.2")
|
||||
|
||||
ksp("dev.zacsweers.autoservice:auto-service-ksp:1.1.0")
|
||||
}
|
0
processor/consumer-rules.pro
Normal file
0
processor/consumer-rules.pro
Normal file
21
processor/proguard-rules.pro
vendored
Normal file
21
processor/proguard-rules.pro
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
# Add project specific ProGuard rules here.
|
||||
# You can control the set of applied configuration files using the
|
||||
# proguardFiles setting in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
||||
|
||||
# Uncomment this to preserve the line number information for
|
||||
# debugging stack traces.
|
||||
#-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# If you keep the line number information, uncomment this to
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
4
processor/src/main/AndroidManifest.xml
Normal file
4
processor/src/main/AndroidManifest.xml
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
</manifest>
|
@ -0,0 +1,84 @@
|
||||
@file:OptIn(KspExperimental::class)
|
||||
@file:Suppress("LocalVariableName", "UNCHECKED_CAST")
|
||||
|
||||
package moe.fuqiuluo.ksp.impl
|
||||
|
||||
import com.google.devtools.ksp.KspExperimental
|
||||
import com.google.devtools.ksp.getAnnotationsByType
|
||||
import com.google.devtools.ksp.getClassDeclarationByName
|
||||
import com.google.devtools.ksp.processing.CodeGenerator
|
||||
import com.google.devtools.ksp.processing.Dependencies
|
||||
import com.google.devtools.ksp.processing.KSPLogger
|
||||
import com.google.devtools.ksp.processing.Resolver
|
||||
import com.google.devtools.ksp.processing.SymbolProcessor
|
||||
import com.google.devtools.ksp.symbol.ClassKind
|
||||
import com.google.devtools.ksp.symbol.KSAnnotated
|
||||
import com.google.devtools.ksp.symbol.KSClassDeclaration
|
||||
import com.google.devtools.ksp.symbol.KSVisitorVoid
|
||||
import com.google.devtools.ksp.validate
|
||||
import com.squareup.kotlinpoet.FileSpec
|
||||
import com.squareup.kotlinpoet.FunSpec
|
||||
import moe.fuqiuluo.symbols.OneBotHandler
|
||||
|
||||
class OneBotHandlerProcessor(
|
||||
private val codeGenerator: CodeGenerator,
|
||||
private val logger: KSPLogger
|
||||
): SymbolProcessor {
|
||||
override fun process(resolver: Resolver): List<KSAnnotated> {
|
||||
val ActionManagerNode = resolver.getClassDeclarationByName("moe.fuqiuluo.shamrock.remote.action.ActionManager")
|
||||
if (ActionManagerNode == null) {
|
||||
logger.error("OneBotHandlerProcessor: ActionManager not found")
|
||||
return emptyList()
|
||||
}
|
||||
val symbols = resolver.getSymbolsWithAnnotation(OneBotHandler::class.qualifiedName!!)
|
||||
val unableToProcess = symbols.filterNot { it.validate() }
|
||||
val oneBotHandlers = (symbols.filter {
|
||||
it is KSClassDeclaration && it.validate() && it.classKind == ClassKind.OBJECT
|
||||
} as Sequence<KSClassDeclaration>).toList()
|
||||
|
||||
if (oneBotHandlers.isNotEmpty()) {
|
||||
ActionManagerNode.accept(ActionManagerVisitor(oneBotHandlers), Unit)
|
||||
}
|
||||
|
||||
return unableToProcess.toList()
|
||||
}
|
||||
|
||||
inner class ActionManagerVisitor(
|
||||
private val actionHandlers: List<KSClassDeclaration>
|
||||
): KSVisitorVoid() {
|
||||
override fun visitClassDeclaration(classDeclaration: KSClassDeclaration, data: Unit) {
|
||||
val packageName = classDeclaration.packageName.asString()
|
||||
|
||||
// generate kotlin `init { }`
|
||||
val fileSpec = FileSpec.builder(packageName, classDeclaration.qualifiedName?.asString() ?: run {
|
||||
throw IllegalStateException("ActionManagerVisitor: classDeclaration.qualifiedName is null")
|
||||
}).addFunction(FunSpec.builder("initManager").apply {
|
||||
actionHandlers.forEach { handler ->
|
||||
// fetch the params of the annotation
|
||||
val annotation = handler.getAnnotationsByType(OneBotHandler::class).first()
|
||||
val actionName = annotation.actionName
|
||||
val alias = annotation.alias
|
||||
alias.forEach { name ->
|
||||
addStatement("actionMap[\"$name\"] = ${handler.simpleName.asString()}")
|
||||
}
|
||||
addStatement("actionMap[\"$actionName\"] = ${handler.simpleName.asString()}")
|
||||
}
|
||||
}.build()).apply {
|
||||
addImport("moe.fuqiuluo.shamrock.remote.action.ActionManager", "actionMap")
|
||||
actionHandlers.forEach {
|
||||
addImport("moe.fuqiuluo.shamrock.remote.action.handlers", it.simpleName.asString())
|
||||
}
|
||||
}.build()
|
||||
|
||||
codeGenerator.createNewFile(
|
||||
dependencies = Dependencies(aggregating = false),
|
||||
packageName = packageName,
|
||||
fileName = "Auto" + classDeclaration.simpleName.asString()
|
||||
).use { outputStream ->
|
||||
outputStream.writer().use {
|
||||
fileSpec.writeTo(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package moe.fuqiuluo.ksp.providers
|
||||
|
||||
import com.google.auto.service.AutoService
|
||||
import com.google.devtools.ksp.processing.SymbolProcessor
|
||||
import com.google.devtools.ksp.processing.SymbolProcessorEnvironment
|
||||
import com.google.devtools.ksp.processing.SymbolProcessorProvider
|
||||
import moe.fuqiuluo.ksp.impl.OneBotHandlerProcessor
|
||||
|
||||
@AutoService(SymbolProcessorProvider::class)
|
||||
class OneBotHandlerProcessorProvider: SymbolProcessorProvider {
|
||||
override fun create(environment: SymbolProcessorEnvironment): SymbolProcessor {
|
||||
return OneBotHandlerProcessor(
|
||||
environment.codeGenerator,
|
||||
environment.logger
|
||||
)
|
||||
}
|
||||
}
|
1
protobuf/.gitignore
vendored
Normal file
1
protobuf/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/build
|
41
protobuf/build.gradle.kts
Normal file
41
protobuf/build.gradle.kts
Normal file
@ -0,0 +1,41 @@
|
||||
plugins {
|
||||
id("com.android.library")
|
||||
id("org.jetbrains.kotlin.android")
|
||||
kotlin("plugin.serialization") version "1.9.21"
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "moe.whitechi73.protobuf"
|
||||
compileSdk = 34
|
||||
|
||||
defaultConfig {
|
||||
minSdk = 24
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
isMinifyEnabled = false
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
}
|
||||
}
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
}
|
||||
kotlinOptions {
|
||||
jvmTarget = "1.8"
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(DEPENDENCY_PROTOBUF)
|
||||
implementation(kotlinx("serialization-protobuf", "1.6.2"))
|
||||
implementation(kotlinx("serialization-json", "1.6.2"))
|
||||
|
||||
}
|
0
protobuf/consumer-rules.pro
Normal file
0
protobuf/consumer-rules.pro
Normal file
21
protobuf/proguard-rules.pro
vendored
Normal file
21
protobuf/proguard-rules.pro
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
# Add project specific ProGuard rules here.
|
||||
# You can control the set of applied configuration files using the
|
||||
# proguardFiles setting in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
||||
|
||||
# Uncomment this to preserve the line number information for
|
||||
# debugging stack traces.
|
||||
#-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# If you keep the line number information, uncomment this to
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
4
protobuf/src/main/AndroidManifest.xml
Normal file
4
protobuf/src/main/AndroidManifest.xml
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
</manifest>
|
@ -0,0 +1,128 @@
|
||||
@file:OptIn(ExperimentalSerializationApi::class)
|
||||
@file:Suppress("ArrayInDataClass")
|
||||
|
||||
package moe.whitechi73.protobuf.fav
|
||||
|
||||
import kotlinx.serialization.ExperimentalSerializationApi
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class WeiyunAddRichMediaReq(
|
||||
@ProtoNumber(1) val commInfo: WeiyunCollectCommInfo? = null,
|
||||
@ProtoNumber(2) val summary: WeiyunRichMediaSummary? = null,
|
||||
@ProtoNumber(3) val richMediaContent: List<WeiyunRichMediaContent>? = null,
|
||||
@ProtoNumber(4) val needShareUrl: Boolean = false,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class WeiyunRichMediaSummary(
|
||||
@ProtoNumber(1) val title: String? = null,
|
||||
@ProtoNumber(2) val subTitle: String = "",
|
||||
@ProtoNumber(3) val brief: String = "",
|
||||
@ProtoNumber(4) val picList: List<WeiyunPicInfo>? = null,
|
||||
@ProtoNumber(5) val contentType: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(6) val originalUri: String = "",
|
||||
@ProtoNumber(7) val publisher: String = "",
|
||||
@ProtoNumber(8) val richMediaVersion: UInt = UInt.MIN_VALUE,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class WeiyunRichMediaContent(
|
||||
@ProtoNumber(1) val richMedia: WeiyunRichMedia? = null,
|
||||
@ProtoNumber(2) val rawData: ByteArray? = null,
|
||||
@ProtoNumber(3) val bizDataList: List<ByteArray>? = null,
|
||||
@ProtoNumber(4) val picList: List<WeiyunPicInfo>? = null,
|
||||
@ProtoNumber(5) val fileList: List<WeiyunFileInfo>? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class WeiyunFileInfo(
|
||||
@ProtoNumber(1) val src: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(2) val uid: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(3) val bid: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(4) val fid: String = "",
|
||||
@ProtoNumber(5) val name: String = "",
|
||||
@ProtoNumber(6) val size: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(7) val md5: ByteArray? = null,
|
||||
@ProtoNumber(8) val sha1: ByteArray? = null,
|
||||
@ProtoNumber(9) val category: UInt = UInt.MIN_VALUE,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class WeiyunRichMedia(
|
||||
@ProtoNumber(1) val sections: List<WeiyunSection>? = null
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class WeiyunSection(
|
||||
@ProtoNumber(1) val items: List<WeiyunItem>? = null
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class WeiyunItem(
|
||||
@ProtoNumber(1) val itemType: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(2) val paragraph: WeiyunParagraph? = null,
|
||||
@ProtoNumber(3) val anchor: WeiyunAnchor? = null,
|
||||
@ProtoNumber(4) val picInfo: WeiyunPicInfo? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class WeiyunPicInfo(
|
||||
@ProtoNumber(1) val uri: String = "",
|
||||
@ProtoNumber(2) val md5: ByteArray? = null,
|
||||
@ProtoNumber(3) val sha1: ByteArray? = null,
|
||||
@ProtoNumber(4) val name: String = "",
|
||||
@ProtoNumber(5) val note: String = "",
|
||||
@ProtoNumber(6) val width: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(7) val height: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(8) val size: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(9) val type: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(10) val owner: WeiyunAuthor? = null,
|
||||
@ProtoNumber(11) val picId: String = "",
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class WeiyunAnchor(
|
||||
@ProtoNumber(1) val url: String = "",
|
||||
@ProtoNumber(2) val desc: String = "",
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class WeiyunParagraph(
|
||||
@ProtoNumber(1) val content: String = "",
|
||||
@ProtoNumber(2) val style: WeiyunStyle? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class WeiyunStyle(
|
||||
@ProtoNumber(1) val color: String = "#FFFFFF",
|
||||
@ProtoNumber(2) val fontFamily: String = "",
|
||||
@ProtoNumber(3) val fontWeight: String = "normal",
|
||||
@ProtoNumber(4) val fontSize: String = "",
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class WeiyunCollectCommInfo(
|
||||
@ProtoNumber(1) val bid: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(2) val category: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(3) val author: WeiyunAuthor? = null,
|
||||
@ProtoNumber(4) val createTime: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(5) val seq: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(6) val bizKey: String = "",
|
||||
@ProtoNumber(7) val bizDataList: List<ByteArray>? = null,
|
||||
@ProtoNumber(8) val shareUrl: String = "",
|
||||
@ProtoNumber(9) val originalAppId: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(10) val customGroupId: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(11) val modifyTime: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(12) val qzoneUgcKey: String = "",
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class WeiyunAuthor(
|
||||
@ProtoNumber(1) val type: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(2) val numId: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(3) val strId: String = "",
|
||||
@ProtoNumber(4) val groupId: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(5) val groupName: String = "",
|
||||
)
|
@ -0,0 +1,13 @@
|
||||
@file:OptIn(ExperimentalSerializationApi::class)
|
||||
package moe.whitechi73.protobuf.fav
|
||||
|
||||
import kotlinx.serialization.ExperimentalSerializationApi
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class WeiyunAddRichMediaResp(
|
||||
@ProtoNumber(1) val cid: String = "",
|
||||
@ProtoNumber(2) val collectTime: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(3) val shareUrl: String = "",
|
||||
)
|
@ -0,0 +1,10 @@
|
||||
package moe.whitechi73.protobuf.fav
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class WeiyunComm(
|
||||
@ProtoNumber(1) val req: WeiyunCommonReq? = null,
|
||||
@ProtoNumber(2) val resp: WeiyunCommonResp? = null
|
||||
)
|
@ -0,0 +1,15 @@
|
||||
@file:OptIn(ExperimentalSerializationApi::class)
|
||||
package moe.whitechi73.protobuf.fav
|
||||
|
||||
import kotlinx.serialization.ExperimentalSerializationApi
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class WeiyunCommonReq (
|
||||
@ProtoNumber(2000) val getFavListReq: WeiyunGetFavListReq? = null,
|
||||
@ProtoNumber(2001) val getFavContentReq: WeiyunGetFavContentReq? = null,
|
||||
@ProtoNumber(2009) val addRichMediaReq: WeiyunAddRichMediaReq? = null,
|
||||
@ProtoNumber(2010) val fastUploadResourceReq: WeiyunFastUploadResourceReq? = null,
|
||||
|
||||
)
|
@ -0,0 +1,14 @@
|
||||
@file:OptIn(ExperimentalSerializationApi::class)
|
||||
package moe.whitechi73.protobuf.fav
|
||||
|
||||
import kotlinx.serialization.ExperimentalSerializationApi
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class WeiyunCommonResp(
|
||||
@ProtoNumber(20000) val getFavListResp: WeiyunGetFavListResp? = null,
|
||||
@ProtoNumber(20001) val getFavContentResp: WeiyunGetFavContentResp? = null,
|
||||
@ProtoNumber(20009) val addRichMediaResp: WeiyunAddRichMediaResp? = null,
|
||||
@ProtoNumber(20010) val fastUploadResourceResp: WeiyunFastUploadResourceResp? = null,
|
||||
)
|
@ -0,0 +1,14 @@
|
||||
@file:OptIn(ExperimentalSerializationApi::class)
|
||||
package moe.whitechi73.protobuf.fav
|
||||
|
||||
import kotlinx.serialization.ExperimentalSerializationApi
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class WeiyunFastUploadResourceReq(
|
||||
@ProtoNumber(1) val picInfoList: List<WeiyunPicInfo>? = null,
|
||||
@ProtoNumber(2) val fileInfoList: List<WeiyunFileInfo>? = null,
|
||||
@ProtoNumber(3) val hostFlag: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(4) val httpsFlag: UInt = UInt.MIN_VALUE,
|
||||
)
|
@ -0,0 +1,39 @@
|
||||
@file:OptIn(ExperimentalSerializationApi::class)
|
||||
|
||||
package moe.whitechi73.protobuf.fav
|
||||
|
||||
import kotlinx.serialization.ExperimentalSerializationApi
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class WeiyunFastUploadResourceResp(
|
||||
@ProtoNumber(1) val picResultList: List<WeiyunFastUploadPicResult>? = null,
|
||||
@ProtoNumber(2) val fileResultList: List<WeiyunFastUploadFileResult>? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class WeiyunFastUploadPicResult(
|
||||
@ProtoNumber(1) val result: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(2) val picInfo: WeiyunPicInfo? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class WeiyunFastUploadFileResult(
|
||||
@ProtoNumber(1) val result: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(2) val picInfo: WeiyunPicInfo? = null,
|
||||
@ProtoNumber(3) val uploadFileInfo: WeiyunUploadFileInfo? = null,
|
||||
@ProtoNumber(4) val notRetransmission: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(5) val failedTips: String = "",
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class WeiyunUploadFileInfo(
|
||||
@ProtoNumber(1) val fileId: String = "",
|
||||
@ProtoNumber(2) val sha1: ByteArray? = null,
|
||||
@ProtoNumber(3) val checkKey: ByteArray? = null,
|
||||
@ProtoNumber(4) val host: String = "",
|
||||
@ProtoNumber(5) val port: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(6) val httpsHost: String = "",
|
||||
@ProtoNumber(7) val httpsPort: UInt = UInt.MIN_VALUE,
|
||||
)
|
@ -0,0 +1,11 @@
|
||||
@file:OptIn(ExperimentalSerializationApi::class)
|
||||
package moe.whitechi73.protobuf.fav
|
||||
|
||||
import kotlinx.serialization.ExperimentalSerializationApi
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class WeiyunGetFavContentReq(
|
||||
@ProtoNumber(1) var cidList: List<String> = emptyList(),
|
||||
)
|
@ -0,0 +1,50 @@
|
||||
@file:OptIn(ExperimentalSerializationApi::class)
|
||||
package moe.whitechi73.protobuf.fav
|
||||
|
||||
import kotlinx.serialization.ExperimentalSerializationApi
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class WeiyunGetFavContentResp(
|
||||
@ProtoNumber(1) val content: List<WeiyunContent>? = null
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class WeiyunContent(
|
||||
@ProtoNumber(1) val text: WeiyunTextContent? = null,
|
||||
@ProtoNumber(2) val link: WeiyunLinkContent? = null,
|
||||
@ProtoNumber(3) val galley: WeiyunGalleyContent? = null,
|
||||
@ProtoNumber(4) val audio: WeiyunAudioContent? = null,
|
||||
@ProtoNumber(5) val video: WeiyunVideoContent? = null,
|
||||
@ProtoNumber(6) val file: WeiyunFileContent? = null,
|
||||
@ProtoNumber(7) val location: WeiyunLocationContent? = null,
|
||||
@ProtoNumber(8) val richMedia: WeiyunRichMediaContent? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class WeiyunTextContent(
|
||||
@ProtoNumber(1) val data: String,
|
||||
@ProtoNumber(2) val hasEmoji: Boolean = false
|
||||
)
|
||||
|
||||
@Serializable
|
||||
class WeiyunLinkContent
|
||||
|
||||
@Serializable
|
||||
class WeiyunGalleyContent
|
||||
|
||||
@Serializable
|
||||
data class WeiyunAudioContent(
|
||||
@ProtoNumber(1) val data: ByteArray,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
class WeiyunVideoContent
|
||||
|
||||
@Serializable
|
||||
class WeiyunFileContent
|
||||
|
||||
@Serializable
|
||||
class WeiyunLocationContent
|
||||
|
@ -0,0 +1,19 @@
|
||||
@file:OptIn(ExperimentalSerializationApi::class)
|
||||
package moe.whitechi73.protobuf.fav
|
||||
|
||||
import kotlinx.serialization.ExperimentalSerializationApi
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class WeiyunGetFavListReq(
|
||||
@ProtoNumber(1) val type: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(2) val bid: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(3) val category: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(4) val startTime: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(5) val orderType: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(6) val startPos: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(7) val pageSize: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(8) val syncPolicy: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(9) val reqSource: UInt = UInt.MIN_VALUE,
|
||||
)
|
@ -0,0 +1,41 @@
|
||||
@file:OptIn(ExperimentalSerializationApi::class)
|
||||
|
||||
package moe.whitechi73.protobuf.fav
|
||||
|
||||
import kotlinx.serialization.ExperimentalSerializationApi
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class WeiyunGetFavListResp(
|
||||
@ProtoNumber(1) val collections: List<WeiyunCollection>? = null,
|
||||
@ProtoNumber(2) val totalCnt: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(3) val result: UInt = UInt.MIN_VALUE,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class WeiyunCollection(
|
||||
@ProtoNumber(1) val cid: String = "",
|
||||
@ProtoNumber(2) val type: Int = Int.MIN_VALUE,
|
||||
@ProtoNumber(3) val status: Int = Int.MIN_VALUE,
|
||||
@ProtoNumber(4) val author: WeiyunAuthor? = null,
|
||||
@ProtoNumber(5) val bid: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(6) val srcAppId: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(7) val srcAppVer: String = "",
|
||||
@ProtoNumber(8) val category: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(9) val createTime: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(10) val collectTime: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(11) val modifyTime: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(12) val seq: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(13) val bizKey: String = "",
|
||||
@ProtoNumber(14) val bizDataList: List<ByteArray>? = null,
|
||||
@ProtoNumber(15) val summary: String = "",
|
||||
@ProtoNumber(16) val starMark: Boolean = false,
|
||||
@ProtoNumber(17) val starTime: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(18) val shareUrl: String = "",
|
||||
@ProtoNumber(19) val originalAppId: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(20) val customGroupId: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(21) val securityBeat: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(22) val qzoneUgcKey: String = "",
|
||||
)
|
||||
|
@ -0,0 +1,30 @@
|
||||
@file:OptIn(ExperimentalSerializationApi::class)
|
||||
@file:Suppress("ArrayInDataClass")
|
||||
|
||||
package moe.whitechi73.protobuf.fav
|
||||
|
||||
import kotlinx.serialization.ExperimentalSerializationApi
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class WeiyunMsgHead(
|
||||
@ProtoNumber(1) val uin: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(2) val seq: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(3) val type: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(4) val cmd: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(5) val appId: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(6) val version: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(7) val netType: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(8) val clientIp: String? = null,
|
||||
@ProtoNumber(9) val encrypt: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(10) val keyType: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(11) val key: ByteArray? = null,
|
||||
@ProtoNumber(14) val majorVersion: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(15) val minorVersion: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(101) val retCode: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(102) val retMsg: String? = null,
|
||||
@ProtoNumber(103) val promptMsg: String? = null,
|
||||
@ProtoNumber(111) val totalSpace: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(112) val usedSpace: ULong = ULong.MIN_VALUE,
|
||||
)
|
@ -0,0 +1,20 @@
|
||||
package moe.whitechi73.protobuf.group_file_common
|
||||
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class FolderInfo(
|
||||
@SerialName("folder_id") @ProtoNumber(1) val folderId: String = "",
|
||||
@SerialName("parent_folder_id") @ProtoNumber(2) val parentFolderId: String = "",
|
||||
@SerialName("folder_name") @ProtoNumber(3) val folderName: String = "",
|
||||
@SerialName("create_time") @ProtoNumber(4) val createTime: UInt = UInt.MIN_VALUE,
|
||||
@SerialName("modify_time") @ProtoNumber(5) val modifyTime: UInt = UInt.MIN_VALUE,
|
||||
@SerialName("creator_uin") @ProtoNumber(6) val createUin: ULong = ULong.MIN_VALUE,
|
||||
@SerialName("creator_name") @ProtoNumber(7) val creatorName: String? = null,
|
||||
@SerialName("total_file_cnt") @ProtoNumber(8) val totalFileCnt: UInt = UInt.MIN_VALUE,
|
||||
@SerialName("modifier_uin") @ProtoNumber(9) val modifyUin: ULong? = null,
|
||||
@SerialName("modifier_name") @ProtoNumber(10) val modifierName: String? = null,
|
||||
@SerialName("used_space") @ProtoNumber(11) val usedSpace: ULong = ULong.MIN_VALUE,
|
||||
)
|
@ -0,0 +1,57 @@
|
||||
@file:OptIn(ExperimentalSerializationApi::class)
|
||||
package moe.whitechi73.protobuf.message
|
||||
|
||||
import kotlinx.serialization.ExperimentalSerializationApi
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class MessageBody(
|
||||
@ProtoNumber(1) val msgHead: MessageHead? = null,
|
||||
@ProtoNumber(2) val contentHead: MessageContentHead? = null,
|
||||
@ProtoNumber(3) val richMsg: RichMessage? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class RichMessage(
|
||||
@ProtoNumber(1) val elements: MessageElementList? = null,
|
||||
@ProtoNumber(2) val rawBuffer: ByteArray? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class MessageElementList(
|
||||
@ProtoNumber(2) val elements: List<MessageElement>? = null
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class MessageElement(
|
||||
@ProtoNumber(51) val json: JsonElement? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class JsonElement(
|
||||
@ProtoNumber(1) val data: ByteArray? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class MessageHead(
|
||||
@ProtoNumber(1) val peer: Long = Long.MIN_VALUE,
|
||||
@ProtoNumber(2) val peerUid: String? = null,
|
||||
@ProtoNumber(3) val flag: Int = Int.MIN_VALUE,
|
||||
@ProtoNumber(5) val receiver: Long? = null,
|
||||
@ProtoNumber(6) val receiverUid: String? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class MessageContentHead(
|
||||
@ProtoNumber(1) val msgType: Int = Int.MIN_VALUE,
|
||||
@ProtoNumber(2) val msgSubType: Int = Int.MIN_VALUE,
|
||||
@ProtoNumber(4) val u1: Long = Long.MIN_VALUE,
|
||||
@ProtoNumber(5) val msgSeq: Long = Long.MIN_VALUE,
|
||||
@ProtoNumber(6) val msgTime: Long? = null,
|
||||
@ProtoNumber(7) val u2: Int? = null,
|
||||
@ProtoNumber(11) val u3: Long? = null,
|
||||
@ProtoNumber(12) val msgRandom: Long = Long.MIN_VALUE,
|
||||
@ProtoNumber(14) val u4: Long? = null,
|
||||
@ProtoNumber(28) val u5: Long? = null,
|
||||
)
|
@ -0,0 +1,14 @@
|
||||
@file:OptIn(ExperimentalSerializationApi::class)
|
||||
package moe.whitechi73.protobuf.oidb
|
||||
|
||||
import kotlinx.serialization.ExperimentalSerializationApi
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class TrpcOidb(
|
||||
@ProtoNumber(1) val cmd: Int = Int.MIN_VALUE,
|
||||
@ProtoNumber(2) val service: Int = Int.MIN_VALUE,
|
||||
@ProtoNumber(4) val buffer: ByteArray,
|
||||
@ProtoNumber(12) val flag: Int = Int.MIN_VALUE,
|
||||
)
|
@ -0,0 +1,87 @@
|
||||
@file:OptIn(ExperimentalSerializationApi::class)
|
||||
|
||||
package moe.whitechi73.protobuf.oidb.cmd0x6d7
|
||||
|
||||
import kotlinx.serialization.ExperimentalSerializationApi
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
import moe.whitechi73.protobuf.group_file_common.FolderInfo
|
||||
|
||||
@Serializable
|
||||
data class Oidb0x6d7ReqBody(
|
||||
@ProtoNumber(1) val createFolder: CreateFolderReq? = null,
|
||||
@ProtoNumber(2) val deleteFolder: DeleteFolderReq? = null,
|
||||
@ProtoNumber(3) val moveFolder: MoveFolderReq? = null,
|
||||
@ProtoNumber(4) val renameFolder: RenameFolderReq? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class CreateFolderReq(
|
||||
@ProtoNumber(1) val groupCode: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(2) val appId: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(3) val parentFolderId: String = "",
|
||||
@ProtoNumber(4) val folderName: String = "",
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class DeleteFolderReq(
|
||||
@ProtoNumber(1) val groupCode: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(2) val appId: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(3) val folderId: String = "",
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class MoveFolderReq(
|
||||
@ProtoNumber(1) val groupCode: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(2) val appId: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(3) val folderId: String = "",
|
||||
@ProtoNumber(4) val parentFolderId: String = "",
|
||||
@ProtoNumber(5) val destFolderId: String = "",
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class RenameFolderReq(
|
||||
@ProtoNumber(1) val groupCode: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(2) val appId: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(3) val folderId: String = "",
|
||||
@ProtoNumber(4) val folderName: String = "",
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class Oidb0x6d7RespBody(
|
||||
@ProtoNumber(1) val createFolder: CreateFolderResp? = null,
|
||||
@ProtoNumber(2) val deleteFolder: DeleteFolderResp? = null,
|
||||
@ProtoNumber(3) val moveFolder: MoveFolderResp? = null,
|
||||
@ProtoNumber(4) val renameFolder: RenameFolderResp? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class CreateFolderResp(
|
||||
@ProtoNumber(1) val retCode: Int = Int.MIN_VALUE,
|
||||
@ProtoNumber(2) val retMsg: String = "",
|
||||
@ProtoNumber(3) val clientWording: String = "",
|
||||
@ProtoNumber(4) val folderInfo: FolderInfo? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class DeleteFolderResp(
|
||||
@ProtoNumber(1) val retCode: Int = Int.MIN_VALUE,
|
||||
@ProtoNumber(2) val retMsg: String = "",
|
||||
@ProtoNumber(3) val clientWording: String = "",
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class MoveFolderResp(
|
||||
@ProtoNumber(1) val retCode: Int = Int.MIN_VALUE,
|
||||
@ProtoNumber(2) val retMsg: String = "",
|
||||
@ProtoNumber(3) val clientWording: String = "",
|
||||
@ProtoNumber(4) val folderInfo: FolderInfo? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class RenameFolderResp(
|
||||
@ProtoNumber(1) val retCode: Int = Int.MIN_VALUE,
|
||||
@ProtoNumber(2) val retMsg: String = "",
|
||||
@ProtoNumber(3) val clientWording: String = "",
|
||||
@ProtoNumber(4) val folderInfo: FolderInfo? = null,
|
||||
)
|
@ -0,0 +1,16 @@
|
||||
package moe.whitechi73.protobuf.push
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class C2CCommonTipsEvent(
|
||||
@ProtoNumber(7) val params: List<PokeParam>? = null,
|
||||
@ProtoNumber(8) val xmlTips: String? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class PokeParam(
|
||||
@ProtoNumber(1) val key: String = "",
|
||||
@ProtoNumber(2) val value: String = "",
|
||||
)
|
@ -0,0 +1,21 @@
|
||||
package moe.whitechi73.protobuf.push
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class C2CRecallEvent(
|
||||
@ProtoNumber(1) val head: C2CRecallHead? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class C2CRecallHead(
|
||||
@ProtoNumber(1) val operator: String? = null,
|
||||
@ProtoNumber(13) val wording: RecallWording? = null,
|
||||
@ProtoNumber(20) val msgSeq: Long = Long.MIN_VALUE,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class RecallWording(
|
||||
@ProtoNumber(2) val wording: String? = null
|
||||
)
|
@ -0,0 +1,6 @@
|
||||
package moe.whitechi73.protobuf.push
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
// by GroupCommonTipsEvent
|
@ -0,0 +1,19 @@
|
||||
package moe.whitechi73.protobuf.push
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class FriendApplyEvent(
|
||||
@ProtoNumber(1) val head: FriendApplyHead? = null,
|
||||
)
|
||||
|
||||
|
||||
@Serializable
|
||||
data class FriendApplyHead(
|
||||
@ProtoNumber(2) val applierUid: String = "",
|
||||
@ProtoNumber(7) val srcId: Int = Int.MIN_VALUE,
|
||||
@ProtoNumber(8) val subSrc: Int = Int.MIN_VALUE,
|
||||
@ProtoNumber(10) val applyMsg: String? = null,
|
||||
@ProtoNumber(11) val source: String? = null,
|
||||
)
|
@ -0,0 +1,11 @@
|
||||
package moe.whitechi73.protobuf.push
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class GroupAdminChangeEvent(
|
||||
@ProtoNumber(1) val groupCode: Long,
|
||||
@ProtoNumber(4) val operation: GroupAdminChangedOperation? = null
|
||||
)
|
||||
|
@ -0,0 +1,16 @@
|
||||
package moe.whitechi73.protobuf.push
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class GroupAdminChangedOperation(
|
||||
@ProtoNumber(1) val unsetInfo: GroupAdminSetInfo? = null,
|
||||
@ProtoNumber(2) val setInfo: GroupAdminSetInfo? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class GroupAdminSetInfo(
|
||||
@ProtoNumber(1) val targetUid: String? = null,
|
||||
@ProtoNumber(2) val operation: Int? = null,
|
||||
)
|
@ -0,0 +1,11 @@
|
||||
package moe.whitechi73.protobuf.push
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class GroupApplyEvent(
|
||||
@ProtoNumber(1) val groupCode: Long = Long.MIN_VALUE,
|
||||
@ProtoNumber(3) val applierUid: String = "",
|
||||
@ProtoNumber(5) val applyMsg: String? = null,
|
||||
)
|
@ -0,0 +1,22 @@
|
||||
package moe.whitechi73.protobuf.push
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class GroupBanEvent(
|
||||
@ProtoNumber(1) val groupCode: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(4) val operatorUid: String = "",
|
||||
@ProtoNumber(5) val target: GroupBanTarget? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class GroupBanTarget(
|
||||
@ProtoNumber(3) val target: GroupBanInfo? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class GroupBanInfo(
|
||||
@ProtoNumber(1) val targetUid: String? = null,
|
||||
@ProtoNumber(2) val rawDuration: UInt = UInt.MIN_VALUE,
|
||||
)
|
@ -0,0 +1,27 @@
|
||||
package moe.whitechi73.protobuf.push
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class GroupCommonTipsEvent(
|
||||
@ProtoNumber(4) val groupCode: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(5) val uniqueTitleChangeDetail: List<GroupUniqueTitleChangeDetail>? = null,
|
||||
@ProtoNumber(11) val recallDetails: GroupRecallDetails? = null,
|
||||
@ProtoNumber(26) val baseTips: List<GroupBaseTips>? = null,
|
||||
@ProtoNumber(33) val essenceMsgInfo: List<EssenceMsgInfo>? = null,
|
||||
@ProtoNumber(37) val msgSeq: ULong = ULong.MIN_VALUE,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class EssenceMsgInfo(
|
||||
@ProtoNumber(4) val type: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(5) val sender: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(6) val operator: ULong = ULong.MIN_VALUE,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class GroupBaseTips(
|
||||
@ProtoNumber(2) val type: UInt = UInt.MIN_VALUE,
|
||||
@ProtoNumber(7) val params: List<PokeParam>? = null
|
||||
)
|
@ -0,0 +1,10 @@
|
||||
package moe.whitechi73.protobuf.push
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class GroupInviteEvent(
|
||||
@ProtoNumber(1) val groupCode: Long,
|
||||
@ProtoNumber(5) val inviterUid: String,
|
||||
)
|
@ -0,0 +1,16 @@
|
||||
package moe.whitechi73.protobuf.push
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class GroupInvitedApplyEvent(
|
||||
@ProtoNumber(2) val applyInfo: GroupInvitedApplyInfo? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class GroupInvitedApplyInfo(
|
||||
@ProtoNumber(1) val type: Int = Int.MIN_VALUE,
|
||||
@ProtoNumber(3) val groupCode: Long = Long.MIN_VALUE,
|
||||
@ProtoNumber(5) val applierUid: String = "",
|
||||
)
|
@ -0,0 +1,12 @@
|
||||
package moe.whitechi73.protobuf.push
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class GroupListChangeEvent(
|
||||
@ProtoNumber(1) val groupCode: Long = Long.MIN_VALUE,
|
||||
@ProtoNumber(3) val memberUid: String = "",
|
||||
@ProtoNumber(4) val type: Int = Int.MIN_VALUE,
|
||||
@ProtoNumber(5) val operatorUid: String = "",
|
||||
)
|
@ -0,0 +1,18 @@
|
||||
package moe.whitechi73.protobuf.push
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class GroupRecallDetails(
|
||||
@ProtoNumber(1) val operatorUid: String = "",
|
||||
@ProtoNumber(3) val msgInfo: RecalledMessageInfo? = null,
|
||||
@ProtoNumber(9) val wording: RecallWording? = null
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class RecalledMessageInfo(
|
||||
@ProtoNumber(1) val msgSeq: ULong,
|
||||
@ProtoNumber(2) val msgTime: ULong,
|
||||
@ProtoNumber(6) val senderUid: String,
|
||||
)
|
@ -0,0 +1,10 @@
|
||||
package moe.whitechi73.protobuf.push
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
|
||||
@Serializable
|
||||
data class GroupUniqueTitleChangeDetail(
|
||||
@ProtoNumber(2) val wording: String = "",
|
||||
@ProtoNumber(5) val targetUin: ULong = ULong.MIN_VALUE,
|
||||
)
|
@ -0,0 +1,26 @@
|
||||
package moe.whitechi73.protobuf.push
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.protobuf.ProtoNumber
|
||||
import moe.whitechi73.protobuf.message.MessageBody
|
||||
|
||||
@Serializable
|
||||
data class MessagePush(
|
||||
@ProtoNumber(1) val msgBody: MessageBody? = null,
|
||||
@ProtoNumber(4) val clientInfo: MessagePushClientInfo? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class MessagePushClientInfo(
|
||||
@ProtoNumber(1) val clientIp: String? = null,
|
||||
@ProtoNumber(3) val liteHead: MessagePushLiteHead? = null
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class MessagePushLiteHead(
|
||||
@ProtoNumber(2) val msgType: Int = Int.MIN_VALUE,
|
||||
@ProtoNumber(3) val msgSeq: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(4) val msgRandom: ULong = ULong.MIN_VALUE,
|
||||
@ProtoNumber(6) val msgSubType: Int = Int.MIN_VALUE,
|
||||
@ProtoNumber(8) val sender: ULong = ULong.MIN_VALUE,
|
||||
)
|
@ -32,7 +32,7 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation("androidx.core:core-ktx:1.9.0")
|
||||
implementation("androidx.appcompat:appcompat:1.6.1")
|
||||
implementation("com.google.android.material:material:1.9.0")
|
||||
DEPENDENCY_ANDROIDX.forEach {
|
||||
implementation(it)
|
||||
}
|
||||
}
|
@ -1,6 +1,8 @@
|
||||
package com.tencent.mobileqq.pb;
|
||||
|
||||
public class PBStringField extends PBPrimitiveField<String>{
|
||||
public static PBStringField __repeatHelper__;
|
||||
|
||||
public PBStringField(String str, boolean z) {
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,32 @@
|
||||
package com.tencent.mobileqq.pskey.oidb.cmd0x102a;
|
||||
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
import com.tencent.mobileqq.pb.PBInt64Field;
|
||||
import com.tencent.mobileqq.pb.PBRepeatField;
|
||||
import com.tencent.mobileqq.pb.PBRepeatMessageField;
|
||||
import com.tencent.mobileqq.pb.PBStringField;
|
||||
import com.tencent.mobileqq.pb.PBUInt32Field;
|
||||
|
||||
public class oidb_cmd0x102a {
|
||||
public static class GetPSkeyRequest extends MessageMicro<GetPSkeyRequest> {
|
||||
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{10, 16}, new String[]{"domains", "flag"}, new Object[]{"", 0}, GetPSkeyRequest.class);
|
||||
public final PBRepeatField<String> domains = PBField.initRepeat(PBStringField.__repeatHelper__);
|
||||
public final PBUInt32Field flag = PBField.initUInt32(0);
|
||||
}
|
||||
|
||||
public static class GetPSkeyResponse extends MessageMicro<GetPSkeyResponse> {
|
||||
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{10}, new String[]{"private_keys"}, new Object[]{null}, GetPSkeyResponse.class);
|
||||
public final PBRepeatMessageField<PSKey> private_keys = PBField.initRepeatMessage(PSKey.class);
|
||||
}
|
||||
|
||||
public static class PSKey extends MessageMicro<PSKey> {
|
||||
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{10, 18, 24, 34, 40}, new String[]{"domain", "key", "key_expire", "uskey", "uskey_expire"}, new Object[]{"", "", 0L, "", 0L}, PSKey.class);
|
||||
public final PBStringField domain = PBField.initString("");
|
||||
public final PBStringField key = PBField.initString("");
|
||||
public final PBInt64Field key_expire = PBField.initInt64(0);
|
||||
public final PBStringField uskey = PBField.initString("");
|
||||
public final PBInt64Field uskey_expire = PBField.initInt64(0);
|
||||
}
|
||||
|
||||
}
|
@ -154,7 +154,7 @@ public interface IAddFriendTempApi extends QRouteApi {
|
||||
|
||||
// void sendDelSingleSystemMsg(structmsg.StructMsg paramStructMsg, String paramString, int paramInt, long paramLong, AppInterface paramAppInterface);
|
||||
|
||||
void sendFriendSystemMsgAction(int msg_type, long msg_seq, long req_uin, int sub_type, int src_id, int sub_src_id, int group_msg_type, structmsg$SystemMsgActionInfo action_info, int system_msg_action_type, structmsg$StructMsg paramStructMsg, boolean isUncommonlyUsedFrd, AppInterface paramAppInterface);
|
||||
void sendFriendSystemMsgAction(int msg_type, long msg_seq, long req_uin, int sub_type, int src_id, int sub_src_id, int group_msg_type, structmsg.SystemMsgActionInfo action_info, int system_msg_action_type, structmsg.StructMsg paramStructMsg, boolean isUncommonlyUsedFrd, AppInterface paramAppInterface);
|
||||
|
||||
void sendFriendSystemMsgReadedReport(AppInterface paramAppInterface);
|
||||
|
||||
|
298
qqinterface/src/main/java/tencent/im/cs/cmd0x346/cmd0x346.java
Normal file
298
qqinterface/src/main/java/tencent/im/cs/cmd0x346/cmd0x346.java
Normal file
@ -0,0 +1,298 @@
|
||||
package tencent.im.cs.cmd0x346;
|
||||
|
||||
import com.tencent.mobileqq.pb.ByteStringMicro;
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBBytesField;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
import com.tencent.mobileqq.pb.PBInt32Field;
|
||||
import com.tencent.mobileqq.pb.PBRepeatField;
|
||||
import com.tencent.mobileqq.pb.PBStringField;
|
||||
import com.tencent.mobileqq.pb.PBUInt32Field;
|
||||
import com.tencent.mobileqq.pb.PBUInt64Field;
|
||||
|
||||
public class cmd0x346 {
|
||||
|
||||
public static class ReqBody extends MessageMicro<ReqBody> {
|
||||
//static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{8, 16, 26, 34, 42, 50, 58, 66, 74, 82, 90, 98, 106, 114, 122, 130, 138, 146, 154, 162, 170,
|
||||
// SharedExtProcessor.CONFIG_ID, 816, 1600, 720002, 720010, 720018, 799994}, new String[]{
|
||||
// "uint32_cmd",
|
||||
// "uint32_seq",
|
||||
// "msg_recv_list_query_req",
|
||||
// "msg_send_list_query_req",
|
||||
// "msg_renew_file_req",
|
||||
// "msg_recall_file_req",
|
||||
// "msg_apply_upload_req",
|
||||
// "msg_apply_upload_hit_req",
|
||||
// "msg_apply_forward_file_req",
|
||||
// "msg_upload_succ_req",
|
||||
// "msg_delete_file_req",
|
||||
// "msg_download_succ_req",
|
||||
// "msg_apply_download_abs_req",
|
||||
// "msg_apply_download_req", // 14
|
||||
// "msg_apply_list_download_req", "msg_file_query_req", "msg_apply_copy_from_req", "msg_apply_upload_req_v2", "msg_apply_upload_req_v3", "msg_apply_upload_hit_req_v2", "msg_apply_upload_hit_req_v3",
|
||||
// "uint32_business_id", // 808
|
||||
// "uint32_client_type", // 816
|
||||
// "uint32_flag_support_mediaplatform",
|
||||
// "msg_apply_copy_to_req", "msg_apply_clean_traffic_req", "msg_apply_get_traffic_req",
|
||||
// "msg_extension_req"}, new Object[]{0, 0, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 0, 0, 0, null, null, null, null}, ReqBody.class);
|
||||
|
||||
public final PBUInt32Field uint32_cmd = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_seq = PBField.initUInt32(0);
|
||||
//public RecvListQueryReq msg_recv_list_query_req = new RecvListQueryReq();
|
||||
//public SendListQueryReq msg_send_list_query_req = new SendListQueryReq();
|
||||
//public RenewFileReq msg_renew_file_req = new MessageMicro<RenewFileReq>() { // from class: tencent.im.cs.cmd0x346.RenewFileReq
|
||||
// static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{8, 18, 24}, new String[]{"uint64_uin", "bytes_uuid", "uint32_add_ttl"}, new Object[]{0L, ByteStringMicro.EMPTY, 0}, RenewFileReq.class);
|
||||
// public final PBUInt64Field uint64_uin = PBField.initUInt64(0);
|
||||
// public final PBBytesField bytes_uuid = PBField.initBytes(ByteStringMicro.EMPTY);
|
||||
// public final PBUInt32Field uint32_add_ttl = PBField.initUInt32(0);
|
||||
//};
|
||||
//public RecallFileReq msg_recall_file_req = new RecallFileReq();
|
||||
//public ApplyUploadReq msg_apply_upload_req = new ApplyUploadReq();
|
||||
//public ApplyUploadHitReq msg_apply_upload_hit_req = new MessageMicro<ApplyUploadHitReq>() { // from class: tencent.im.cs.cmd0x346.ApplyUploadHitReq
|
||||
// static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{80, 160, 240, 322, 402, 482, PlayerResources.ViewId.GET_MORE_TOGGLE_AREA, 640}, new String[]{"uint64_sender_uin", "uint64_recver_uin", "uint64_file_size", "str_file_name", "bytes_10m_md5", "str_local_filepath", "uint32_danger_level", "uint64_total_space"}, new Object[]{0L, 0L, 0L, "", ByteStringMicro.EMPTY, "", 0, 0L}, ApplyUploadHitReq.class);
|
||||
// public final PBUInt64Field uint64_sender_uin = PBField.initUInt64(0);
|
||||
// public final PBUInt64Field uint64_recver_uin = PBField.initUInt64(0);
|
||||
// public final PBUInt64Field uint64_file_size = PBField.initUInt64(0);
|
||||
// public final PBStringField str_file_name = PBField.initString("");
|
||||
// public final PBBytesField bytes_10m_md5 = PBField.initBytes(ByteStringMicro.EMPTY);
|
||||
// public final PBStringField str_local_filepath = PBField.initString("");
|
||||
// public final PBUInt32Field uint32_danger_level = PBField.initUInt32(0);
|
||||
// public final PBUInt64Field uint64_total_space = PBField.initUInt64(0);
|
||||
//};
|
||||
//public ApplyForwardFileReq msg_apply_forward_file_req = new ApplyForwardFileReq();
|
||||
//public UploadSuccReq msg_upload_succ_req = new UploadSuccReq();
|
||||
//public DeleteFileReq msg_delete_file_req = new DeleteFileReq();
|
||||
//public DownloadSuccReq msg_download_succ_req = new DownloadSuccReq();
|
||||
//public ApplyDownloadAbsReq msg_apply_download_abs_req = new ApplyDownloadAbsReq();
|
||||
public ApplyDownloadReq msg_apply_download_req = new ApplyDownloadReq();
|
||||
//public ApplyListDownloadReq msg_apply_list_download_req = new MessageMicro<ApplyListDownloadReq>() { // from class: tencent.im.cs.cmd0x346.ApplyListDownloadReq
|
||||
// static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{80, 160, 240}, new String[]{"uint64_uin", "uint32_begin_index", "uint32_req_count"}, new Object[]{0L, 0, 0}, ApplyListDownloadReq.class);
|
||||
// public final PBUInt64Field uint64_uin = PBField.initUInt64(0);
|
||||
// public final PBUInt32Field uint32_begin_index = PBField.initUInt32(0);
|
||||
// public final PBUInt32Field uint32_req_count = PBField.initUInt32(0);
|
||||
//};
|
||||
//public FileQueryReq msg_file_query_req = new FileQueryReq();
|
||||
//public ApplyCopyFromReq msg_apply_copy_from_req = new MessageMicro<ApplyCopyFromReq>() { // from class: tencent.im.cs.cmd0x346.ApplyCopyFromReq
|
||||
// static final MessageMicro.FieldMap __fieldMap__;
|
||||
// public final PBBytesField bytes_file_md5;
|
||||
// public final PBBytesField bytes_src_parentfolder;
|
||||
// public final PBBytesField bytes_src_uuid;
|
||||
// public final PBStringField str_file_name;
|
||||
// public final PBUInt32Field uint32_danger_level;
|
||||
// public final PBUInt64Field uint64_dst_uin;
|
||||
// public final PBUInt64Field uint64_file_size;
|
||||
// public final PBUInt64Field uint64_total_space;
|
||||
// public final PBUInt64Field uint64_src_uin = PBField.initUInt64(0);
|
||||
// public final PBUInt64Field uint64_src_group = PBField.initUInt64(0);
|
||||
// public final PBUInt32Field uint32_src_svcid = PBField.initUInt32(0);
|
||||
|
||||
// static {
|
||||
// ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
// __fieldMap__ = MessageMicro.initFieldMap(new int[]{80, 160, 240, 322, 402, 482, PlayerResources.ViewId.GET_MORE_TOGGLE_AREA, 640, QVipServiceAccountFolderProcessor.CMD, 800, x.CTRL_INDEX}, new String[]{"uint64_src_uin", "uint64_src_group", "uint32_src_svcid", "bytes_src_parentfolder", "bytes_src_uuid", "bytes_file_md5", "uint64_dst_uin", "uint64_file_size", "str_file_name", "uint32_danger_level", "uint64_total_space"}, new Object[]{0L, 0L, 0, byteStringMicro, byteStringMicro, byteStringMicro, 0L, 0L, "", 0, 0L}, ApplyCopyFromReq.class);
|
||||
// }
|
||||
|
||||
// {
|
||||
// ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
// this.bytes_src_parentfolder = PBField.initBytes(byteStringMicro);
|
||||
// this.bytes_src_uuid = PBField.initBytes(byteStringMicro);
|
||||
// this.bytes_file_md5 = PBField.initBytes(byteStringMicro);
|
||||
// this.uint64_dst_uin = PBField.initUInt64(0L);
|
||||
// this.uint64_file_size = PBField.initUInt64(0L);
|
||||
// this.str_file_name = PBField.initString("");
|
||||
// this.uint32_danger_level = PBField.initUInt32(0);
|
||||
// this.uint64_total_space = PBField.initUInt64(0L);
|
||||
// / }
|
||||
//};
|
||||
//public ApplyUploadReqV2 msg_apply_upload_req_v2 = new ApplyUploadReqV2();
|
||||
//public ApplyUploadReqV3 msg_apply_upload_req_v3 = new ApplyUploadReqV3();
|
||||
//public ApplyUploadHitReqV2 msg_apply_upload_hit_req_v2 = new ApplyUploadHitReqV2();
|
||||
//public ApplyUploadHitReqV3 msg_apply_upload_hit_req_v3 = new MessageMicro<ApplyUploadHitReqV3>() { // from class: tencent.im.cs.cmd0x346.ApplyUploadHitReqV3
|
||||
// static final MessageMicro.FieldMap __fieldMap__;
|
||||
// public final PBBytesField bytes_10m_md5;
|
||||
// public final PBBytesField bytes_sha;
|
||||
// public final PBStringField str_local_filepath;
|
||||
// public final PBUInt32Field uint32_danger_level;
|
||||
// public final PBUInt64Field uint64_total_space;
|
||||
// public final PBUInt64Field uint64_sender_uin = PBField.initUInt64(0);
|
||||
// public final PBUInt64Field uint64_recver_uin = PBField.initUInt64(0);
|
||||
// public final PBUInt64Field uint64_file_size = PBField.initUInt64(0);
|
||||
// public final PBStringField str_file_name = PBField.initString("");
|
||||
|
||||
// static {
|
||||
// ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
// __fieldMap__ = MessageMicro.initFieldMap(new int[]{80, 160, 240, 322, 402, 482, 562, 640, 720}, new String[]{"uint64_sender_uin", "uint64_recver_uin", "uint64_file_size", "str_file_name", "bytes_10m_md5", "bytes_sha", "str_local_filepath", "uint32_danger_level", "uint64_total_space"}, new Object[]{0L, 0L, 0L, "", byteStringMicro, byteStringMicro, "", 0, 0L}, ApplyUploadHitReqV3.class);
|
||||
// }
|
||||
|
||||
// {
|
||||
// ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
// this.bytes_10m_md5 = PBField.initBytes(byteStringMicro);
|
||||
// this.bytes_sha = PBField.initBytes(byteStringMicro);
|
||||
// this.str_local_filepath = PBField.initString("");
|
||||
// this.uint32_danger_level = PBField.initUInt32(0);
|
||||
// this.uint64_total_space = PBField.initUInt64(0L);
|
||||
// }
|
||||
//};
|
||||
//public ApplyCopyToReq msg_apply_copy_to_req = new ApplyCopyToReq();
|
||||
//public ApplyCleanTrafficReq msg_apply_clean_traffic_req = new MessageMicro<ApplyCleanTrafficReq>() { // from class: tencent.im.cs.cmd0x346.ApplyCleanTrafficReq
|
||||
// static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[0], new String[0], new Object[0], ApplyCleanTrafficReq.class);
|
||||
//};
|
||||
//public ApplyGetTrafficReq msg_apply_get_traffic_req = new MessageMicro<ApplyGetTrafficReq>() { // from class: tencent.im.cs.cmd0x346.ApplyGetTrafficReq
|
||||
// static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[0], new String[0], new Object[0], ApplyGetTrafficReq.class);
|
||||
//};
|
||||
public final PBUInt32Field uint32_business_id = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_client_type = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_flag_support_mediaplatform = PBField.initUInt32(0);
|
||||
public ExtensionReq msg_extension_req = new ExtensionReq();
|
||||
}
|
||||
|
||||
public static class ExtensionReq extends MessageMicro<ExtensionReq> {
|
||||
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{8, 16, 26, 32, 162, 800, 720802, 721600, 722400, 723200, 724000, 724800, 725600, 726400, 727200, 728000, 728800}, new String[]{
|
||||
"uint64_id", "uint64_type", "str_dst_phonenum", "int32_phone_convert_type", "bytes_sig", "uint64_route_id", "msg_del_message_req",
|
||||
|
||||
"uint32_download_url_type",
|
||||
|
||||
"uint32_ptt_format", "uint32_is_need_inner_ip", "uint32_net_type", "uint32_voice_type", "uint32_file_type", "uint32_ptt_time", "uint32_bdh_cmdid", "uint32_req_transfer_type", "uint32_is_auto"}, new Object[]{0L, 0L, "", 0, ByteStringMicro.EMPTY, 0L, null, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0},ExtensionReq.class);
|
||||
public final PBUInt64Field uint64_id = PBField.initUInt64(0);
|
||||
public final PBUInt64Field uint64_type = PBField.initUInt64(0);
|
||||
public final PBStringField str_dst_phonenum = PBField.initString("");
|
||||
public final PBInt32Field int32_phone_convert_type = PBField.initInt32(0);
|
||||
public final PBBytesField bytes_sig = PBField.initBytes(ByteStringMicro.EMPTY);
|
||||
public final PBUInt64Field uint64_route_id = PBField.initUInt64(0);
|
||||
/*public cmd0x346$DelMessageReq msg_del_message_req = new MessageMicro<cmd0x346$DelMessageReq>() { // from class: tencent.im.cs.cmd0x346.cmd0x346$DelMessageReq
|
||||
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{8, 16, 80, 160, 240}, new String[]{"uint64_uin_sender", "uint64_uin_receiver", "uint32_msg_time", "uint32_msg_random", "uint32_msg_seq_no"}, new Object[]{0L, 0L, 0, 0, 0}, cmd0x346$DelMessageReq.class);
|
||||
public final PBUInt64Field uint64_uin_sender = PBField.initUInt64(0);
|
||||
public final PBUInt64Field uint64_uin_receiver = PBField.initUInt64(0);
|
||||
public final PBUInt32Field uint32_msg_time = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_msg_random = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_msg_seq_no = PBField.initUInt32(0);
|
||||
};*/
|
||||
public final PBUInt32Field uint32_download_url_type = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_ptt_format = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_is_need_inner_ip = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_net_type = PBField.initUInt32(255);
|
||||
public final PBUInt32Field uint32_voice_type = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_file_type = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_ptt_time = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_bdh_cmdid = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_req_transfer_type = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_is_auto = PBField.initUInt32(0);
|
||||
}
|
||||
|
||||
public static class ApplyDownloadReq extends MessageMicro<ApplyDownloadReq> {
|
||||
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{80, 162, 240, 400, 482, 4000, 4008, 4802}, new String[]{
|
||||
"uint64_uin", // 10
|
||||
"bytes_uuid", // 20
|
||||
"uint32_owner_type", // 30
|
||||
|
||||
"uint32_filetype", // 50
|
||||
|
||||
"str_fileidcrc", // 60
|
||||
|
||||
"uint32_ext_uintype", "uint32_need_https_url", "str_fileid"}, new Object[]{0L, ByteStringMicro.EMPTY, 0, 0, "", 0, 0, ""}, ApplyDownloadReq.class);
|
||||
public final PBUInt64Field uint64_uin = PBField.initUInt64(0);
|
||||
public final PBBytesField bytes_uuid = PBField.initBytes(ByteStringMicro.EMPTY);
|
||||
public final PBUInt32Field uint32_owner_type = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_filetype = PBField.initUInt32(0);
|
||||
public final PBStringField str_fileidcrc = PBField.initString("");
|
||||
public final PBUInt32Field uint32_ext_uintype = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_need_https_url = PBField.initUInt32(0);
|
||||
public final PBStringField str_fileid = PBField.initString("");
|
||||
}
|
||||
|
||||
public static class RspBody extends MessageMicro<RspBody> {
|
||||
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{8, 16, 26, 34, 42, 50, 58, 66, 74, 82, 90, 98, 106, 114, 122, 130, 138, 146, 154, 162, 170, 400, 720002, 720010, 720018, 799994}, new String[]{"uint32_cmd", "uint32_seq", "msg_recv_list_query_rsp", "msg_send_list_query_rsp", "msg_renew_file_rsp", "msg_recall_file_rsp", "msg_apply_upload_rsp", "msg_apply_upload_hit_rsp", "msg_apply_forward_file_rsp", "msg_upload_succ_rsp", "msg_delete_file_rsp", "msg_download_succ_rsp", "msg_apply_download_abs_rsp", "msg_apply_download_rsp", "msg_apply_list_download_rsp", "msg_file_query_rsp", "msg_apply_copy_from_rsp", "msg_apply_upload_rsp_v2", "msg_apply_upload_rsp_v3", "msg_apply_upload_hit_rsp_v2", "msg_apply_upload_hit_rsp_v3", "uint32_flag_use_media_platform", "msg_apply_copy_to_rsp", "msg_apply_clean_traffic_rsp", "msg_apply_get_traffic_rsp", "msg_extension_rsp"}, new Object[]{0, 0, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 0, null, null, null, null}, RspBody.class);
|
||||
public final PBUInt32Field uint32_cmd = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_seq = PBField.initUInt32(0);
|
||||
public ApplyDownloadRsp msg_apply_download_rsp = new ApplyDownloadRsp();
|
||||
}
|
||||
|
||||
public static class ApplyDownloadRsp extends MessageMicro<ApplyDownloadRsp> {
|
||||
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{80, 162, 242, 322, 402}, new String[]{"int32_ret_code", "str_ret_msg", "msg_download_info", "msg_file_info", "bytes_file_sha"}, new Object[]{0, "", null, null, ByteStringMicro.EMPTY}, ApplyDownloadRsp.class);
|
||||
public final PBInt32Field int32_ret_code = PBField.initInt32(0);
|
||||
public final PBStringField str_ret_msg = PBField.initString("");
|
||||
public DownloadInfo msg_download_info = new DownloadInfo();
|
||||
public FileInfo msg_file_info = new FileInfo();
|
||||
public final PBBytesField bytes_file_sha = PBField.initBytes(ByteStringMicro.EMPTY);
|
||||
}
|
||||
|
||||
public static class DownloadInfo extends MessageMicro<DownloadInfo> {
|
||||
//static final MessageMicro.FieldMap __fieldMap__;
|
||||
public final PBBytesField bytes_download_key;
|
||||
public final PBBytesField bytes_media_platform_download_key;
|
||||
public final PBRepeatField<String> rpt_str_downloadip_list;
|
||||
public final PBStringField str_cookie;
|
||||
public final PBStringField str_download_dns;
|
||||
public final PBStringField str_download_domain;
|
||||
public final PBStringField str_download_ip;
|
||||
public final PBStringField str_download_url;
|
||||
public final PBRepeatField<String> str_downloadipv6_list;
|
||||
public final PBStringField str_https_download_domain;
|
||||
public final PBUInt32Field uint32_https_port;
|
||||
public final PBUInt32Field uint32_port;
|
||||
|
||||
static {
|
||||
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
//__fieldMap__ = MessageMicro.initFieldMap(new int[]{82, 162, 242, 320, 402, 482, 562, 640, QVipServiceAccountFolderProcessor.CMD, 882, 962, 1042}, new String[]
|
||||
// {"bytes_download_key", "str_download_ip", "str_download_domain", "uint32_port", "str_download_url", "rpt_str_downloadip_list", "str_cookie", "uint32_https_port", "str_https_download_domain", "str_download_dns", "bytes_media_platform_download_key", "str_downloadipv6_list"}, new Object[]{byteStringMicro, "", "", 0, "", "", "", Integer.valueOf((int) WebSocketImpl.DEFAULT_WSS_PORT), "", "", byteStringMicro, ""}, cmd0x346$DownloadInfo.class);
|
||||
}
|
||||
|
||||
public DownloadInfo() {
|
||||
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
this.bytes_download_key = PBField.initBytes(byteStringMicro);
|
||||
this.str_download_ip = PBField.initString("");
|
||||
this.str_download_domain = PBField.initString("");
|
||||
this.uint32_port = PBField.initUInt32(0);
|
||||
this.str_download_url = PBField.initString("");
|
||||
PBStringField pBStringField = PBStringField.__repeatHelper__;
|
||||
this.rpt_str_downloadip_list = PBField.initRepeat(pBStringField);
|
||||
this.str_cookie = PBField.initString("");
|
||||
this.uint32_https_port = PBField.initUInt32(443);
|
||||
this.str_https_download_domain = PBField.initString("");
|
||||
this.str_download_dns = PBField.initString("");
|
||||
this.bytes_media_platform_download_key = PBField.initBytes(byteStringMicro);
|
||||
this.str_downloadipv6_list = PBField.initRepeat(pBStringField);
|
||||
}
|
||||
}
|
||||
|
||||
public static class FileInfo extends MessageMicro<FileInfo> {
|
||||
//static final MessageMicro.FieldMap __fieldMap__;
|
||||
public final PBBytesField bytes_10m_md5;
|
||||
public final PBBytesField bytes_3sha;
|
||||
public final PBBytesField bytes_md5;
|
||||
public final PBBytesField bytes_sha;
|
||||
public final PBBytesField bytes_uuid;
|
||||
public final PBStringField str_file_name;
|
||||
public final PBStringField str_fileidcrc;
|
||||
public final PBUInt32Field uint32_abs_file_type;
|
||||
public final PBUInt32Field uint32_client_type;
|
||||
public final PBUInt32Field uint32_expire_time;
|
||||
public final PBUInt64Field uint64_owner_uin;
|
||||
public final PBUInt64Field uint64_peer_uin;
|
||||
public final PBUInt64Field uint64_uin = PBField.initUInt64(0);
|
||||
public final PBUInt32Field uint32_danger_evel = PBField.initUInt32(0);
|
||||
public final PBUInt64Field uint64_file_size = PBField.initUInt64(0);
|
||||
public final PBUInt32Field uint32_life_time = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_upload_time = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
//__fieldMap__ = MessageMicro.initFieldMap(new int[]{8, 16, 24, 32, 40, 50, 58, 720, 802, 810, x.CTRL_INDEX, 960, 968, 1040, gdt_analysis_event.EVENT_GET_SUBSCRIBER_ID, 1130, h.CTRL_INDEX}, new String[]{"uint64_uin", "uint32_danger_evel", "uint64_file_size", "uint32_life_time", "uint32_upload_time", "bytes_uuid", "str_file_name", "uint32_abs_file_type", "bytes_10m_md5", "bytes_sha", "uint32_client_type", "uint64_owner_uin", "uint64_peer_uin", "uint32_expire_time", "str_fileidcrc", "bytes_md5", "bytes_3sha"}, new Object[]{0L, 0, 0L, 0, 0, byteStringMicro, "", 0, byteStringMicro, byteStringMicro, 0, 0L, 0L, 0, "", byteStringMicro, byteStringMicro}, cmd0x346$FileInfo.class);
|
||||
}
|
||||
|
||||
public FileInfo() {
|
||||
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
this.bytes_uuid = PBField.initBytes(byteStringMicro);
|
||||
this.str_file_name = PBField.initString("");
|
||||
this.uint32_abs_file_type = PBField.initUInt32(0);
|
||||
this.bytes_10m_md5 = PBField.initBytes(byteStringMicro);
|
||||
this.bytes_sha = PBField.initBytes(byteStringMicro);
|
||||
this.uint32_client_type = PBField.initUInt32(0);
|
||||
this.uint64_owner_uin = PBField.initUInt64(0L);
|
||||
this.uint64_peer_uin = PBField.initUInt64(0L);
|
||||
this.uint32_expire_time = PBField.initUInt32(0);
|
||||
this.str_fileidcrc = PBField.initString("");
|
||||
this.bytes_md5 = PBField.initBytes(byteStringMicro);
|
||||
this.bytes_3sha = PBField.initBytes(byteStringMicro);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,230 @@
|
||||
package tencent.im.oidb.cmd0x6d6;
|
||||
|
||||
import com.tencent.mobileqq.pb.ByteStringMicro;
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBBoolField;
|
||||
import com.tencent.mobileqq.pb.PBBytesField;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
import com.tencent.mobileqq.pb.PBInt32Field;
|
||||
import com.tencent.mobileqq.pb.PBRepeatField;
|
||||
import com.tencent.mobileqq.pb.PBStringField;
|
||||
import com.tencent.mobileqq.pb.PBUInt32Field;
|
||||
import com.tencent.mobileqq.pb.PBUInt64Field;
|
||||
|
||||
public final class oidb_0x6d6 {
|
||||
public static class ReqBody extends MessageMicro<ReqBody> {
|
||||
public UploadFileReqBody upload_file_req = new UploadFileReqBody();
|
||||
public ResendReqBody resend_file_req = new ResendReqBody();
|
||||
public DownloadFileReqBody download_file_req = new DownloadFileReqBody();
|
||||
public DeleteFileReqBody delete_file_req = new DeleteFileReqBody();
|
||||
public RenameFileReqBody rename_file_req = new RenameFileReqBody();
|
||||
public MoveFileReqBody move_file_req = new MoveFileReqBody();
|
||||
}
|
||||
|
||||
public static class RspBody extends MessageMicro<RspBody> {
|
||||
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{10, 18, 26, 34, 42, 50}, new String[]{"upload_file_rsp", "resend_file_rsp", "download_file_rsp", "delete_file_rsp", "rename_file_rsp", "move_file_rsp"}, new Object[]{null, null, null, null, null, null}, RspBody.class);
|
||||
public UploadFileRspBody upload_file_rsp = new UploadFileRspBody();
|
||||
public ResendRspBody resend_file_rsp = new ResendRspBody();
|
||||
public DownloadFileRspBody download_file_rsp = new DownloadFileRspBody();
|
||||
public DeleteFileRspBody delete_file_rsp = new DeleteFileRspBody();
|
||||
public RenameFileRspBody rename_file_rsp = new RenameFileRspBody();
|
||||
public MoveFileRspBody move_file_rsp = new MoveFileRspBody();
|
||||
}
|
||||
|
||||
public static class ResendRspBody extends MessageMicro<ResendRspBody> {
|
||||
static final MessageMicro.FieldMap __fieldMap__;
|
||||
public final PBBytesField bytes_check_key;
|
||||
public final PBBytesField bytes_file_key;
|
||||
public final PBInt32Field int32_ret_code = PBField.initInt32(0);
|
||||
public final PBStringField str_ret_msg = PBField.initString("");
|
||||
public final PBStringField str_client_wording = PBField.initString("");
|
||||
public final PBStringField str_upload_ip = PBField.initString("");
|
||||
|
||||
static {
|
||||
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[]{8, 18, 26, 34, 42, 50}, new String[]{"int32_ret_code", "str_ret_msg", "str_client_wording", "str_upload_ip", "bytes_file_key", "bytes_check_key"}, new Object[]{0, "", "", "", byteStringMicro, byteStringMicro}, ResendRspBody.class);
|
||||
}
|
||||
|
||||
public ResendRspBody() {
|
||||
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
this.bytes_file_key = PBField.initBytes(byteStringMicro);
|
||||
this.bytes_check_key = PBField.initBytes(byteStringMicro);
|
||||
}
|
||||
}
|
||||
|
||||
public static class DeleteFileRspBody extends MessageMicro<DeleteFileRspBody> {
|
||||
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{8, 18, 26}, new String[]{"int32_ret_code", "str_ret_msg", "str_client_wording"}, new Object[]{0, "", ""}, DeleteFileRspBody.class);
|
||||
public final PBInt32Field int32_ret_code = PBField.initInt32(0);
|
||||
public final PBStringField str_ret_msg = PBField.initString("");
|
||||
public final PBStringField str_client_wording = PBField.initString("");
|
||||
}
|
||||
|
||||
public static class MoveFileRspBody extends MessageMicro<MoveFileRspBody> {
|
||||
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{8, 18, 26, 34}, new String[]{"int32_ret_code", "str_ret_msg", "str_client_wording", "str_parent_folder_id"}, new Object[]{0, "", "", ""}, MoveFileRspBody.class);
|
||||
public final PBInt32Field int32_ret_code = PBField.initInt32(0);
|
||||
public final PBStringField str_ret_msg = PBField.initString("");
|
||||
public final PBStringField str_client_wording = PBField.initString("");
|
||||
public final PBStringField str_parent_folder_id = PBField.initString("");
|
||||
}
|
||||
|
||||
public static class DownloadFileRspBody extends MessageMicro<DownloadFileRspBody> {
|
||||
static final MessageMicro.FieldMap __fieldMap__;
|
||||
public final PBBytesField bytes_cookie_val;
|
||||
public final PBBytesField bytes_download_url;
|
||||
public final PBBytesField bytes_md5;
|
||||
public final PBBytesField bytes_sha;
|
||||
public final PBBytesField bytes_sha3;
|
||||
public final PBBytesField str_download_dns;
|
||||
public final PBStringField str_download_dns_https;
|
||||
public final PBStringField str_save_file_name;
|
||||
public final PBUInt32Field uint32_preview_port;
|
||||
public final PBUInt32Field uint32_preview_port_https;
|
||||
public final PBInt32Field int32_ret_code = PBField.initInt32(0);
|
||||
public final PBStringField str_ret_msg = PBField.initString("");
|
||||
public final PBStringField str_client_wording = PBField.initString("");
|
||||
public final PBStringField str_download_ip = PBField.initString("");
|
||||
|
||||
static {
|
||||
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[]{8, 18, 26, 34, 42, 50, 58, 66, 74, 82, 90, 96, 106, 112}, new String[]{"int32_ret_code", "str_ret_msg", "str_client_wording", "str_download_ip", "str_download_dns", "bytes_download_url", "bytes_sha", "bytes_sha3", "bytes_md5", "bytes_cookie_val", "str_save_file_name", "uint32_preview_port", "str_download_dns_https", "uint32_preview_port_https"}, new Object[]{0, "", "", "", byteStringMicro, byteStringMicro, byteStringMicro, byteStringMicro, byteStringMicro, byteStringMicro, "", 0, "", 0}, DownloadFileRspBody.class);
|
||||
}
|
||||
|
||||
public DownloadFileRspBody() {
|
||||
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
this.str_download_dns = PBField.initBytes(byteStringMicro);
|
||||
this.bytes_download_url = PBField.initBytes(byteStringMicro);
|
||||
this.bytes_sha = PBField.initBytes(byteStringMicro);
|
||||
this.bytes_sha3 = PBField.initBytes(byteStringMicro);
|
||||
this.bytes_md5 = PBField.initBytes(byteStringMicro);
|
||||
this.bytes_cookie_val = PBField.initBytes(byteStringMicro);
|
||||
this.str_save_file_name = PBField.initString("");
|
||||
this.uint32_preview_port = PBField.initUInt32(0);
|
||||
this.str_download_dns_https = PBField.initString("");
|
||||
this.uint32_preview_port_https = PBField.initUInt32(0);
|
||||
}
|
||||
}
|
||||
|
||||
public static class UploadFileRspBody extends MessageMicro<UploadFileRspBody> {
|
||||
static final MessageMicro.FieldMap __fieldMap__;
|
||||
public final PBBoolField bool_file_exist;
|
||||
public final PBBytesField bytes_check_key;
|
||||
public final PBBytesField bytes_file_key;
|
||||
public final PBRepeatField<String> str_upload_ip_lan_v4;
|
||||
public final PBRepeatField<String> str_upload_ip_lan_v6;
|
||||
public final PBUInt32Field uint32_upload_port;
|
||||
public final PBInt32Field int32_ret_code = PBField.initInt32(0);
|
||||
public final PBStringField str_ret_msg = PBField.initString("");
|
||||
public final PBStringField str_client_wording = PBField.initString("");
|
||||
public final PBStringField str_upload_ip = PBField.initString("");
|
||||
public final PBStringField str_server_dns = PBField.initString("");
|
||||
public final PBUInt32Field uint32_bus_id = PBField.initUInt32(0);
|
||||
public final PBStringField str_file_id = PBField.initString("");
|
||||
|
||||
static {
|
||||
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[]{8, 18, 26, 34, 42, 48, 58, 66, 74, 80, 98, 106, 112}, new String[]{"int32_ret_code", "str_ret_msg", "str_client_wording", "str_upload_ip", "str_server_dns", "uint32_bus_id", "str_file_id", "bytes_file_key", "bytes_check_key", "bool_file_exist", "str_upload_ip_lan_v4", "str_upload_ip_lan_v6", "uint32_upload_port"}, new Object[]{0, "", "", "", "", 0, "", byteStringMicro, byteStringMicro, Boolean.FALSE, "", "", 0}, UploadFileRspBody.class);
|
||||
}
|
||||
|
||||
public UploadFileRspBody() {
|
||||
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
this.bytes_file_key = PBField.initBytes(byteStringMicro);
|
||||
this.bytes_check_key = PBField.initBytes(byteStringMicro);
|
||||
this.bool_file_exist = PBField.initBool(false);
|
||||
PBStringField pBStringField = PBStringField.__repeatHelper__;
|
||||
this.str_upload_ip_lan_v4 = PBField.initRepeat(pBStringField);
|
||||
this.str_upload_ip_lan_v6 = PBField.initRepeat(pBStringField);
|
||||
this.uint32_upload_port = PBField.initUInt32(0);
|
||||
}
|
||||
}
|
||||
|
||||
public static class RenameFileRspBody extends MessageMicro<RenameFileRspBody> {
|
||||
public final PBInt32Field int32_ret_code = PBField.initInt32(0);
|
||||
public final PBStringField str_ret_msg = PBField.initString("");
|
||||
public final PBStringField str_client_wording = PBField.initString("");
|
||||
}
|
||||
|
||||
public static class ResendReqBody extends MessageMicro<ResendReqBody> {
|
||||
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{8, 16, 24, 34, 42}, new String[]{"uint64_group_code", "uint32_app_id", "uint32_bus_id", "str_file_id", "bytes_sha"}, new Object[]{0L, 0, 0, "", ByteStringMicro.EMPTY}, ResendReqBody.class);
|
||||
public final PBUInt64Field uint64_group_code = PBField.initUInt64(0);
|
||||
public final PBUInt32Field uint32_app_id = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_bus_id = PBField.initUInt32(0);
|
||||
public final PBStringField str_file_id = PBField.initString("");
|
||||
public final PBBytesField bytes_sha = PBField.initBytes(ByteStringMicro.EMPTY);
|
||||
}
|
||||
|
||||
public static class DownloadFileReqBody extends MessageMicro<DownloadFileReqBody> {
|
||||
static final MessageMicro.FieldMap __fieldMap__;
|
||||
public final PBUInt64Field uint64_group_code = PBField.initUInt64(0);
|
||||
public final PBUInt32Field uint32_app_id = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_bus_id = PBField.initUInt32(0);
|
||||
public final PBStringField str_file_id = PBField.initString("");
|
||||
public final PBBoolField bool_thumbnail_req = PBField.initBool(false);
|
||||
public final PBUInt32Field uint32_url_type = PBField.initUInt32(0);
|
||||
public final PBBoolField bool_preview_req = PBField.initBool(false);
|
||||
public final PBUInt32Field uint32_src = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
Boolean bool = Boolean.FALSE;
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[]{8, 16, 24, 34, 40, 48, 56, 64}, new String[]{"uint64_group_code", "uint32_app_id", "uint32_bus_id", "str_file_id", "bool_thumbnail_req", "uint32_url_type", "bool_preview_req", "uint32_src"}, new Object[]{0L, 0, 0, "", bool, 0, bool, 0}, DownloadFileReqBody.class);
|
||||
}
|
||||
}
|
||||
|
||||
public static class DeleteFileReqBody extends MessageMicro<DeleteFileReqBody> {
|
||||
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{8, 16, 24, 34, 42, 48, 56}, new String[]{"uint64_group_code", "uint32_app_id", "uint32_bus_id", "str_parent_folder_id", "str_file_id", "uint32_msgdb_seq", "uint32_msg_rand"}, new Object[]{0L, 0, 0, "", "", 0, 0}, DeleteFileReqBody.class);
|
||||
public final PBUInt64Field uint64_group_code = PBField.initUInt64(0);
|
||||
public final PBUInt32Field uint32_app_id = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_bus_id = PBField.initUInt32(0);
|
||||
public final PBStringField str_parent_folder_id = PBField.initString("");
|
||||
public final PBStringField str_file_id = PBField.initString("");
|
||||
public final PBUInt32Field uint32_msgdb_seq = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_msg_rand = PBField.initUInt32(0);
|
||||
}
|
||||
|
||||
public static class MoveFileReqBody extends MessageMicro<MoveFileReqBody> {
|
||||
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{8, 16, 24, 34, 42, 50}, new String[]{"uint64_group_code", "uint32_app_id", "uint32_bus_id", "str_file_id", "str_parent_folder_id", "str_dest_folder_id"}, new Object[]{0L, 0, 0, "", "", ""}, MoveFileReqBody.class);
|
||||
public final PBUInt64Field uint64_group_code = PBField.initUInt64(0);
|
||||
public final PBUInt32Field uint32_app_id = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_bus_id = PBField.initUInt32(0);
|
||||
public final PBStringField str_file_id = PBField.initString("");
|
||||
public final PBStringField str_parent_folder_id = PBField.initString("");
|
||||
public final PBStringField str_dest_folder_id = PBField.initString("");
|
||||
}
|
||||
|
||||
public static class UploadFileReqBody extends MessageMicro<UploadFileReqBody> {
|
||||
static final MessageMicro.FieldMap __fieldMap__;
|
||||
public final PBBoolField bool_support_multi_upload;
|
||||
public final PBBytesField bytes_md5;
|
||||
public final PBBytesField bytes_sha;
|
||||
public final PBBytesField bytes_sha3;
|
||||
public final PBUInt64Field uint64_group_code = PBField.initUInt64(0);
|
||||
public final PBUInt32Field uint32_app_id = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_bus_id = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_entrance = PBField.initUInt32(0);
|
||||
public final PBStringField str_parent_folder_id = PBField.initString("");
|
||||
public final PBStringField str_file_name = PBField.initString("");
|
||||
public final PBStringField str_local_path = PBField.initString("");
|
||||
public final PBUInt64Field uint64_file_size = PBField.initUInt64(0);
|
||||
|
||||
static {
|
||||
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[]{8, 16, 24, 32, 42, 50, 58, 64, 74, 82, 90, 120}, new String[]{"uint64_group_code", "uint32_app_id", "uint32_bus_id", "uint32_entrance", "str_parent_folder_id", "str_file_name", "str_local_path", "uint64_file_size", "bytes_sha", "bytes_sha3", "bytes_md5", "bool_support_multi_upload"}, new Object[]{0L, 0, 0, 0, "", "", "", 0L, byteStringMicro, byteStringMicro, byteStringMicro, Boolean.FALSE}, UploadFileReqBody.class);
|
||||
}
|
||||
|
||||
public UploadFileReqBody() {
|
||||
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
this.bytes_sha = PBField.initBytes(byteStringMicro);
|
||||
this.bytes_sha3 = PBField.initBytes(byteStringMicro);
|
||||
this.bytes_md5 = PBField.initBytes(byteStringMicro);
|
||||
this.bool_support_multi_upload = PBField.initBool(false);
|
||||
}
|
||||
}
|
||||
|
||||
public static class RenameFileReqBody extends MessageMicro<RenameFileReqBody> {
|
||||
public final PBUInt64Field uint64_group_code = PBField.initUInt64(0);
|
||||
public final PBUInt32Field uint32_app_id = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_bus_id = PBField.initUInt32(0);
|
||||
public final PBStringField str_file_id = PBField.initString("");
|
||||
public final PBStringField str_parent_folder_id = PBField.initString("");
|
||||
public final PBStringField str_new_file_name = PBField.initString("");
|
||||
}
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package tencent.im.oidb.cmd0xe37;
|
||||
|
||||
import com.tencent.mobileqq.pb.ByteStringMicro;
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBBytesField;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
|
||||
public class cmd0xe37 {
|
||||
public static class Req0xe37 extends MessageMicro<Req0xe37> {
|
||||
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{10}, new String[]{"bytes_cmd_0x346_req_body"}, new Object[]{ByteStringMicro.EMPTY}, Req0xe37.class);
|
||||
public final PBBytesField bytes_cmd_0x346_req_body = PBField.initBytes(ByteStringMicro.EMPTY);
|
||||
}
|
||||
|
||||
public static class Resp0xe37 extends MessageMicro<Resp0xe37> {
|
||||
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{10}, new String[]{"bytes_cmd_0x346_rsp_body"}, new Object[]{ByteStringMicro.EMPTY}, Resp0xe37.class);
|
||||
public final PBBytesField bytes_cmd_0x346_rsp_body = PBField.initBytes(ByteStringMicro.EMPTY);
|
||||
}
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
package tencent.im.oidb.cmd0xeac;
|
||||
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
import com.tencent.mobileqq.pb.PBRepeatMessageField;
|
||||
import com.tencent.mobileqq.pb.PBStringField;
|
||||
import com.tencent.mobileqq.pb.PBUInt32Field;
|
||||
import com.tencent.mobileqq.pb.PBUInt64Field;
|
||||
|
||||
public class oidb_0xeac {
|
||||
public static class ReqBody extends MessageMicro<ReqBody> {
|
||||
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{8, 16, 24}, new String[]{"group_code", "msg_seq", "msg_random"}, new Object[]{0L, 0, 0}, ReqBody.class);
|
||||
public final PBUInt64Field group_code = PBField.initUInt64(0);
|
||||
public final PBUInt32Field msg_seq = PBField.initUInt32(0);
|
||||
public final PBUInt32Field msg_random = PBField.initUInt32(0);
|
||||
}
|
||||
|
||||
public static class RspBody extends MessageMicro<RspBody> {
|
||||
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{10, 16, 24, 34, 80}, new String[]{"wording", "digest_uin", "digest_time", "msg", "error_code"}, new Object[]{"", 0L, 0, null, 0}, RspBody.class);
|
||||
public final PBStringField wording = PBField.initString("");
|
||||
public final PBUInt64Field digest_uin = PBField.initUInt64(0);
|
||||
public final PBUInt32Field digest_time = PBField.initUInt32(0);
|
||||
|
||||
/* renamed from: msg reason: collision with root package name */
|
||||
public DigestMsg f340993msg = new DigestMsg();
|
||||
public final PBUInt32Field error_code = PBField.initUInt32(0);
|
||||
}
|
||||
|
||||
public static class DigestMsg extends MessageMicro<DigestMsg> {
|
||||
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{8, 16, 24, 34, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112}, new String[]{"group_code", "msg_seq", "msg_random", "msg_content", "text_size", "pic_size", "video_size", "sender_uin", "sender_time", "add_digest_uin", "add_digest_time", "start_time", "latest_msg_seq", "op_type"}, new Object[]{0L, 0, 0, null, 0L, 0L, 0L, 0L, 0, 0L, 0, 0, 0, 0}, DigestMsg.class);
|
||||
public final PBUInt64Field group_code = PBField.initUInt64(0);
|
||||
public final PBUInt32Field msg_seq = PBField.initUInt32(0);
|
||||
public final PBUInt32Field msg_random = PBField.initUInt32(0);
|
||||
//public final PBRepeatMessageField<MsgElem> msg_content = PBField.initRepeatMessage(MsgElem.class);
|
||||
public final PBUInt64Field text_size = PBField.initUInt64(0);
|
||||
public final PBUInt64Field pic_size = PBField.initUInt64(0);
|
||||
public final PBUInt64Field video_size = PBField.initUInt64(0);
|
||||
public final PBUInt64Field sender_uin = PBField.initUInt64(0);
|
||||
public final PBUInt32Field sender_time = PBField.initUInt32(0);
|
||||
public final PBUInt64Field add_digest_uin = PBField.initUInt64(0);
|
||||
public final PBUInt32Field add_digest_time = PBField.initUInt32(0);
|
||||
public final PBUInt32Field start_time = PBField.initUInt32(0);
|
||||
public final PBUInt32Field latest_msg_seq = PBField.initUInt32(0);
|
||||
public final PBUInt32Field op_type = PBField.initUInt32(0);
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package tencent.im.oidb.cmd0xed3;
|
||||
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
import com.tencent.mobileqq.pb.PBUInt32Field;
|
||||
import com.tencent.mobileqq.pb.PBUInt64Field;
|
||||
|
||||
public class oidb_cmd0xed3 {
|
||||
public static class ReqBody extends MessageMicro<ReqBody> {
|
||||
static final MessageMicro.FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[]{8, 16, 24, 32, 40, 48}, new String[]{"uint64_to_uin", "uint64_group_code", "uint32_msg_seq", "uint32_msg_rand", "uint64_aio_uin", "uint32_nudge_type"}, new Object[]{0L, 0L, 0, 0, 0L, 0}, ReqBody.class);
|
||||
public final PBUInt64Field uint64_to_uin = PBField.initUInt64(0);
|
||||
public final PBUInt64Field uint64_group_code = PBField.initUInt64(0);
|
||||
public final PBUInt32Field uint32_msg_seq = PBField.initUInt32(0);
|
||||
public final PBUInt32Field uint32_msg_rand = PBField.initUInt32(0);
|
||||
public final PBUInt64Field uint64_aio_uin = PBField.initUInt64(0);
|
||||
public final PBUInt32Field uint32_nudge_type = PBField.initUInt32(0);
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
package tencent.mobileim.structmsg;
|
||||
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
import com.tencent.mobileqq.pb.PBUInt32Field;
|
||||
|
||||
public final class structmsg$AddFrdSNInfo extends MessageMicro<structmsg$AddFrdSNInfo> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public final PBUInt32Field uint32_not_see_dynamic = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field uint32_set_sn = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
Integer integer = Integer.valueOf(0);
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] { 8, 16 }, new String[] { "uint32_not_see_dynamic", "uint32_set_sn" }, new Object[] { integer, integer }, structmsg$AddFrdSNInfo.class);
|
||||
}
|
||||
}
|
||||
|
@ -1,54 +0,0 @@
|
||||
package tencent.mobileim.structmsg;
|
||||
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
import com.tencent.mobileqq.pb.PBUInt32Field;
|
||||
|
||||
public final class structmsg$FlagInfo extends MessageMicro<structmsg$FlagInfo> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public final PBUInt32Field FrdMsg_Discuss2ManyChat = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field FrdMsg_GetBusiCard = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field FrdMsg_NeedWaitingMsg = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field FrdMsg_uint32_need_all_unread_msg = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_GetC2cInviteJoinGroup = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_GetDisbandedByAdmin = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_GetOfficialAccount = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_GetPayInGroup = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_HiddenGrp = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_Kick_Admin = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_NeedAutoAdminWording = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_NotAllowJoinGrp_InviteNotFrd = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_WordingDown = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_get_quit_pay_group_msg_flag = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_get_transfer_group_msg_flag = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_mask_invite_auto_join = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_support_invite_auto_join = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
Integer integer = Integer.valueOf(0);
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] {
|
||||
8, 16, 24, 32, 40, 48, 56, 64, 72, 80,
|
||||
88, 96, 104, 112, 120, 128, 136 }, new String[] {
|
||||
"GrpMsg_Kick_Admin", "GrpMsg_HiddenGrp", "GrpMsg_WordingDown", "FrdMsg_GetBusiCard", "GrpMsg_GetOfficialAccount", "GrpMsg_GetPayInGroup", "FrdMsg_Discuss2ManyChat", "GrpMsg_NotAllowJoinGrp_InviteNotFrd", "FrdMsg_NeedWaitingMsg", "FrdMsg_uint32_need_all_unread_msg",
|
||||
"GrpMsg_NeedAutoAdminWording", "GrpMsg_get_transfer_group_msg_flag", "GrpMsg_get_quit_pay_group_msg_flag", "GrpMsg_support_invite_auto_join", "GrpMsg_mask_invite_auto_join", "GrpMsg_GetDisbandedByAdmin", "GrpMsg_GetC2cInviteJoinGroup" }, new Object[] {
|
||||
integer, integer, integer, integer, integer, integer, integer, integer, integer, integer,
|
||||
integer, integer, integer, integer, integer, integer, integer }, structmsg$FlagInfo.class);
|
||||
}
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
package tencent.mobileim.structmsg;
|
||||
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
import com.tencent.mobileqq.pb.PBStringField;
|
||||
|
||||
public final class structmsg$FriendInfo extends MessageMicro<structmsg$FriendInfo> {
|
||||
static final FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[] { 10, 18 }, new String[] { "msg_joint_friend", "msg_blacklist" }, new Object[] { "", "" }, structmsg$FriendInfo.class);
|
||||
|
||||
public final PBStringField msg_blacklist = PBField.initString("");
|
||||
|
||||
public final PBStringField msg_joint_friend = PBField.initString("");
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
package tencent.mobileim.structmsg;
|
||||
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
import com.tencent.mobileqq.pb.PBStringField;
|
||||
import com.tencent.mobileqq.pb.PBUInt32Field;
|
||||
|
||||
public final class structmsg$GroupInfo extends MessageMicro<structmsg$GroupInfo> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public final PBUInt32Field display_action = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field group_auth_type = PBField.initUInt32(0);
|
||||
|
||||
public final PBStringField msg_alert = PBField.initString("");
|
||||
|
||||
public final PBStringField msg_detail_alert = PBField.initString("");
|
||||
|
||||
public final PBStringField msg_other_admin_done = PBField.initString("");
|
||||
|
||||
public final PBUInt32Field uint32_app_privilege_flag = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
Integer integer = Integer.valueOf(0);
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] { 8, 16, 26, 34, 42, 48 }, new String[] { "group_auth_type", "display_action", "msg_alert", "msg_detail_alert", "msg_other_admin_done", "uint32_app_privilege_flag" }, new Object[] { integer, integer, "", "", "", integer }, structmsg$GroupInfo.class);
|
||||
}
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
package tencent.mobileim.structmsg;
|
||||
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
import com.tencent.mobileqq.pb.PBUInt32Field;
|
||||
import com.tencent.mobileqq.pb.PBUInt64Field;
|
||||
|
||||
public final class structmsg$MsgInviteExt extends MessageMicro<structmsg$MsgInviteExt> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public final PBUInt32Field uint32_src_type = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field uint32_wait_state = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt64Field uint64_src_code = PBField.initUInt64(0L);
|
||||
|
||||
static {
|
||||
Integer integer = Integer.valueOf(0);
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] { 8, 16, 24 }, new String[] { "uint32_src_type", "uint64_src_code", "uint32_wait_state" }, new Object[] { integer, Long.valueOf(0L), integer }, structmsg$MsgInviteExt.class);
|
||||
}
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
package tencent.mobileim.structmsg;
|
||||
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
import com.tencent.mobileqq.pb.PBUInt64Field;
|
||||
|
||||
public final class structmsg$MsgPayGroupExt extends MessageMicro<structmsg$MsgPayGroupExt> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public final PBUInt64Field uint64_join_grp_time = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt64Field uint64_quit_grp_time = PBField.initUInt64(0L);
|
||||
|
||||
static {
|
||||
Long long_ = Long.valueOf(0L);
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] { 8, 16 }, new String[] { "uint64_join_grp_time", "uint64_quit_grp_time" }, new Object[] { long_, long_ }, structmsg$MsgPayGroupExt.class);
|
||||
}
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
package tencent.mobileim.structmsg;
|
||||
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBEnumField;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
import com.tencent.mobileqq.pb.PBUInt32Field;
|
||||
import com.tencent.mobileqq.pb.PBUInt64Field;
|
||||
|
||||
public final class structmsg$ReqNextSystemMsg extends MessageMicro<structmsg$ReqNextSystemMsg> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public final PBEnumField checktype = PBField.initEnum(1);
|
||||
|
||||
public structmsg$FlagInfo flag = new structmsg$FlagInfo();
|
||||
|
||||
public final PBUInt64Field following_friend_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt64Field following_group_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt64Field friend_msg_type_flag = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt32Field language = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field msg_num = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field uint32_need_uid = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field uint32_req_msg_type = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field version = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
Integer integer = Integer.valueOf(0);
|
||||
Long long_ = Long.valueOf(0L);
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] { 8, 16, 24, 32, 42, 48, 56, 64, 72, 128 }, new String[] { "msg_num", "following_friend_seq", "following_group_seq", "checktype", "flag", "language", "version", "friend_msg_type_flag", "uint32_req_msg_type", "uint32_need_uid" }, new Object[] { integer, long_, long_, Integer.valueOf(1), null, integer, integer, long_, integer, integer }, structmsg$ReqNextSystemMsg.class);
|
||||
}
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
package tencent.mobileim.structmsg;
|
||||
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBEnumField;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
import com.tencent.mobileqq.pb.PBUInt32Field;
|
||||
import com.tencent.mobileqq.pb.PBUInt64Field;
|
||||
|
||||
public final class structmsg$ReqSystemMsgAction extends MessageMicro<structmsg$ReqSystemMsgAction> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public structmsg$SystemMsgActionInfo action_info = new structmsg$SystemMsgActionInfo();
|
||||
|
||||
public final PBUInt32Field group_msg_type = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field language = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt64Field msg_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBEnumField msg_type = PBField.initEnum(1);
|
||||
|
||||
public final PBUInt64Field req_uin = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt32Field src_id = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field sub_src_id = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field sub_type = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
Integer integer = Integer.valueOf(0);
|
||||
Long long_ = Long.valueOf(0L);
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] { 8, 16, 24, 32, 40, 48, 56, 66, 72 }, new String[] { "msg_type", "msg_seq", "req_uin", "sub_type", "src_id", "sub_src_id", "group_msg_type", "action_info", "language" }, new Object[] { Integer.valueOf(1), long_, long_, integer, integer, integer, integer, null, integer }, structmsg$ReqSystemMsgAction.class);
|
||||
}
|
||||
}
|
@ -1,49 +0,0 @@
|
||||
package tencent.mobileim.structmsg;
|
||||
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBBoolField;
|
||||
import com.tencent.mobileqq.pb.PBEnumField;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
import com.tencent.mobileqq.pb.PBUInt32Field;
|
||||
import com.tencent.mobileqq.pb.PBUInt64Field;
|
||||
|
||||
public final class structmsg$ReqSystemMsgNew extends MessageMicro<structmsg$ReqSystemMsgNew> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public final PBEnumField checktype = PBField.initEnum(1);
|
||||
|
||||
public structmsg$FlagInfo flag = new structmsg$FlagInfo();
|
||||
|
||||
public final PBUInt64Field friend_msg_type_flag = PBField.initUInt64(0L);
|
||||
|
||||
public final PBBoolField is_get_frd_ribbon = PBField.initBool(true);
|
||||
|
||||
public final PBBoolField is_get_grp_ribbon = PBField.initBool(true);
|
||||
|
||||
public final PBUInt32Field language = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt64Field latest_friend_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt64Field latest_group_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt32Field msg_num = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field uint32_need_uid = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field uint32_req_msg_type = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field version = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
Integer integer = Integer.valueOf(0);
|
||||
Long long_ = Long.valueOf(0L);
|
||||
Boolean bool = Boolean.TRUE;
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] {
|
||||
8, 16, 24, 32, 40, 50, 56, 64, 72, 80,
|
||||
88, 128 }, new String[] {
|
||||
"msg_num", "latest_friend_seq", "latest_group_seq", "version", "checktype", "flag", "language", "is_get_frd_ribbon", "is_get_grp_ribbon", "friend_msg_type_flag",
|
||||
"uint32_req_msg_type", "uint32_need_uid" }, new Object[] {
|
||||
integer, long_, long_, integer, Integer.valueOf(1), null, integer, bool, bool, long_,
|
||||
integer, integer }, structmsg$ReqSystemMsgNew.class);
|
||||
}
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
package tencent.mobileim.structmsg;
|
||||
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBEnumField;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
import com.tencent.mobileqq.pb.PBUInt32Field;
|
||||
import com.tencent.mobileqq.pb.PBUInt64Field;
|
||||
|
||||
public final class structmsg$ReqSystemMsgRead extends MessageMicro<structmsg$ReqSystemMsgRead> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public final PBEnumField checktype = PBField.initEnum(1);
|
||||
|
||||
public final PBUInt64Field latest_friend_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt64Field latest_group_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt32Field type = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field uint32_req_msg_type = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
Long long_ = Long.valueOf(0L);
|
||||
Integer integer = Integer.valueOf(0);
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] { 8, 16, 24, 32, 40 }, new String[] { "latest_friend_seq", "latest_group_seq", "type", "checktype", "uint32_req_msg_type" }, new Object[] { long_, long_, integer, Integer.valueOf(1), integer }, structmsg$ReqSystemMsgRead.class);
|
||||
}
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
package tencent.mobileim.structmsg;
|
||||
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
import com.tencent.mobileqq.pb.PBInt32Field;
|
||||
import com.tencent.mobileqq.pb.PBStringField;
|
||||
|
||||
public final class structmsg$RspHead extends MessageMicro<structmsg$RspHead> {
|
||||
static final FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[] { 8, 18 }, new String[] { "result", "msg_fail" }, new Object[] { Integer.valueOf(0), "" }, structmsg$RspHead.class);
|
||||
|
||||
public final PBStringField msg_fail = PBField.initString("");
|
||||
|
||||
public final PBInt32Field result = PBField.initInt32(0);
|
||||
}
|
||||
|
@ -1,37 +0,0 @@
|
||||
package tencent.mobileim.structmsg;
|
||||
|
||||
import com.tencent.mobileqq.pb.ByteStringMicro;
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBBytesField;
|
||||
import com.tencent.mobileqq.pb.PBEnumField;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
import com.tencent.mobileqq.pb.PBRepeatMessageField;
|
||||
import com.tencent.mobileqq.pb.PBStringField;
|
||||
import com.tencent.mobileqq.pb.PBUInt32Field;
|
||||
import com.tencent.mobileqq.pb.PBUInt64Field;
|
||||
|
||||
public final class structmsg$RspNextSystemMsg extends MessageMicro<structmsg$RspNextSystemMsg> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public final PBStringField bytes_game_nick = PBField.initString("");
|
||||
|
||||
public final PBBytesField bytes_undecid_for_qim = PBField.initBytes(ByteStringMicro.EMPTY);
|
||||
|
||||
public final PBEnumField checktype = PBField.initEnum(1);
|
||||
|
||||
public final PBUInt64Field following_friend_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt64Field following_group_seq = PBField.initUInt64(0L);
|
||||
|
||||
public structmsg$RspHead head = new structmsg$RspHead();
|
||||
|
||||
public final PBRepeatMessageField<structmsg$StructMsg> msgs = PBField.initRepeatMessage(structmsg$StructMsg.class);
|
||||
|
||||
public final PBUInt32Field uint32_un_read_count3 = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
Long long_ = Long.valueOf(0L);
|
||||
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] { 10, 18, 24, 32, 40, 802, 810, 816 }, new String[] { "head", "msgs", "following_friend_seq", "following_group_seq", "checktype", "bytes_game_nick", "bytes_undecid_for_qim", "uint32_un_read_count3" }, new Object[] { null, null, long_, long_, Integer.valueOf(1), "", byteStringMicro, Integer.valueOf(0) }, structmsg$RspNextSystemMsg.class);
|
||||
}
|
||||
}
|
@ -1,25 +0,0 @@
|
||||
package tencent.mobileim.structmsg;
|
||||
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
import com.tencent.mobileqq.pb.PBStringField;
|
||||
import com.tencent.mobileqq.pb.PBUInt32Field;
|
||||
|
||||
public final class structmsg$RspSystemMsgAction extends MessageMicro<structmsg$RspSystemMsgAction> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public structmsg$RspHead head = new structmsg$RspHead();
|
||||
|
||||
public final PBStringField msg_detail = PBField.initString("");
|
||||
|
||||
public final PBStringField msg_invalid_decided = PBField.initString("");
|
||||
|
||||
public final PBUInt32Field remark_result = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field type = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
Integer integer = Integer.valueOf(0);
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] { 10, 18, 24, 42, 48 }, new String[] { "head", "msg_detail", "type", "msg_invalid_decided", "remark_result" }, new Object[] { null, "", integer, "", integer }, structmsg$RspSystemMsgAction.class);
|
||||
}
|
||||
}
|
@ -1,66 +0,0 @@
|
||||
package tencent.mobileim.structmsg;
|
||||
|
||||
import com.tencent.mobileqq.pb.ByteStringMicro;
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBBytesField;
|
||||
import com.tencent.mobileqq.pb.PBEnumField;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
import com.tencent.mobileqq.pb.PBRepeatMessageField;
|
||||
import com.tencent.mobileqq.pb.PBStringField;
|
||||
import com.tencent.mobileqq.pb.PBUInt32Field;
|
||||
import com.tencent.mobileqq.pb.PBUInt64Field;
|
||||
|
||||
public final class structmsg$RspSystemMsgNew extends MessageMicro<structmsg$RspSystemMsgNew> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public final PBStringField bytes_game_nick = PBField.initString("");
|
||||
|
||||
public final PBBytesField bytes_undecid_for_qim = PBField.initBytes(ByteStringMicro.EMPTY);
|
||||
|
||||
public final PBEnumField checktype = PBField.initEnum(1);
|
||||
|
||||
public final PBUInt64Field following_friend_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt64Field following_group_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBRepeatMessageField<structmsg$StructMsg> friendmsgs = PBField.initRepeatMessage(structmsg$StructMsg.class);
|
||||
|
||||
public final PBRepeatMessageField<structmsg$StructMsg> groupmsgs = PBField.initRepeatMessage(structmsg$StructMsg.class);
|
||||
|
||||
public final PBStringField grp_msg_display = PBField.initString("");
|
||||
|
||||
public structmsg$RspHead head = new structmsg$RspHead();
|
||||
|
||||
public final PBUInt64Field latest_friend_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt64Field latest_group_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBStringField msg_display = PBField.initString("");
|
||||
|
||||
public structmsg$StructMsg msg_ribbon_friend = new structmsg$StructMsg();
|
||||
|
||||
public structmsg$StructMsg msg_ribbon_group = new structmsg$StructMsg();
|
||||
|
||||
public final PBUInt32Field uint32_has_suspicious_flag = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field uint32_over = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field uint32_un_read_count3 = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field unread_friend_count = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field unread_group_count = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
Integer integer = Integer.valueOf(0);
|
||||
Long long_ = Long.valueOf(0L);
|
||||
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] {
|
||||
10, 16, 24, 32, 40, 48, 56, 74, 82, 90,
|
||||
98, 106, 114, 120, 160, 802, 810, 816, 824 }, new String[] {
|
||||
"head", "unread_friend_count", "unread_group_count", "latest_friend_seq", "latest_group_seq", "following_friend_seq", "following_group_seq", "friendmsgs", "groupmsgs", "msg_ribbon_friend",
|
||||
"msg_ribbon_group", "msg_display", "grp_msg_display", "uint32_over", "checktype", "bytes_game_nick", "bytes_undecid_for_qim", "uint32_un_read_count3", "uint32_has_suspicious_flag" }, new Object[] {
|
||||
null, integer, integer, long_, long_, long_, long_, null, null, null,
|
||||
null, "", "", integer, Integer.valueOf(1), "", byteStringMicro, integer, integer }, structmsg$RspSystemMsgNew.class);
|
||||
}
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
package tencent.mobileim.structmsg;
|
||||
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBEnumField;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
import com.tencent.mobileqq.pb.PBUInt32Field;
|
||||
|
||||
public final class structmsg$RspSystemMsgRead extends MessageMicro<structmsg$RspSystemMsgRead> {
|
||||
static final FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[] { 10, 16, 24 }, new String[] { "head", "type", "checktype" }, new Object[] { null, Integer.valueOf(0), Integer.valueOf(1) }, structmsg$RspSystemMsgRead.class);
|
||||
|
||||
public final PBEnumField checktype = PBField.initEnum(1);
|
||||
|
||||
public structmsg$RspHead head = new structmsg$RspHead();
|
||||
|
||||
public final PBUInt32Field type = PBField.initUInt32(0);
|
||||
}
|
||||
|
@ -1,31 +0,0 @@
|
||||
package tencent.mobileim.structmsg;
|
||||
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBEnumField;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
import com.tencent.mobileqq.pb.PBUInt32Field;
|
||||
import com.tencent.mobileqq.pb.PBUInt64Field;
|
||||
|
||||
public final class structmsg$StructMsg extends MessageMicro<structmsg$StructMsg> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public structmsg$SystemMsg msg = new structmsg$SystemMsg();
|
||||
|
||||
public final PBUInt64Field msg_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt64Field msg_time = PBField.initUInt64(0L);
|
||||
|
||||
public final PBEnumField msg_type = PBField.initEnum(1);
|
||||
|
||||
public final PBUInt64Field req_uin = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt32Field uint32_unread_flag = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field version = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
Integer integer = Integer.valueOf(0);
|
||||
Long long_ = Long.valueOf(0L);
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] { 8, 16, 24, 32, 40, 48, 402 }, new String[] { "version", "msg_type", "msg_seq", "msg_time", "req_uin", "uint32_unread_flag", "msg" }, new Object[] { integer, Integer.valueOf(1), long_, long_, long_, integer, null }, structmsg$StructMsg.class);
|
||||
}
|
||||
}
|
@ -1,186 +0,0 @@
|
||||
package tencent.mobileim.structmsg;
|
||||
|
||||
import com.tencent.mobileqq.pb.ByteStringMicro;
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBBytesField;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
import com.tencent.mobileqq.pb.PBInt32Field;
|
||||
import com.tencent.mobileqq.pb.PBRepeatMessageField;
|
||||
import com.tencent.mobileqq.pb.PBStringField;
|
||||
import com.tencent.mobileqq.pb.PBUInt32Field;
|
||||
import com.tencent.mobileqq.pb.PBUInt64Field;
|
||||
|
||||
public final class structmsg$SystemMsg extends MessageMicro<structmsg$SystemMsg> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public final PBUInt64Field action_uin = PBField.initUInt64(0L);
|
||||
|
||||
public final PBStringField action_uin_nick;
|
||||
|
||||
public final PBBytesField action_uin_qq_nick;
|
||||
|
||||
public final PBBytesField action_uin_remark;
|
||||
|
||||
public final PBRepeatMessageField<structmsg$SystemMsgAction> actions = PBField.initRepeatMessage(structmsg$SystemMsgAction.class);
|
||||
|
||||
public final PBUInt64Field actor_uin = PBField.initUInt64(0L);
|
||||
|
||||
public final PBStringField actor_uin_nick;
|
||||
|
||||
public final PBBytesField bytes_addtion;
|
||||
|
||||
public final PBBytesField bytes_game_msg;
|
||||
|
||||
public final PBBytesField bytes_game_nick;
|
||||
|
||||
public final PBBytesField bytes_name_more;
|
||||
|
||||
public final PBBytesField bytes_source_desc;
|
||||
|
||||
public final PBBytesField bytes_transparent_group_notify;
|
||||
|
||||
public final PBBytesField bytes_warning_tips;
|
||||
|
||||
public final PBUInt32Field card_switch;
|
||||
|
||||
public final PBUInt64Field clone_uin = PBField.initUInt64(0L);
|
||||
|
||||
public final PBStringField clone_uin_nick;
|
||||
|
||||
public final PBBytesField eim_group_id_name;
|
||||
|
||||
public structmsg$FriendInfo friend_info = new structmsg$FriendInfo();
|
||||
|
||||
public final PBUInt64Field group_code = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt32Field group_ext_flag;
|
||||
|
||||
public structmsg$GroupInfo group_info = new structmsg$GroupInfo();
|
||||
|
||||
public final PBUInt32Field group_inviter_role = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field group_msg_type = PBField.initUInt32(0);
|
||||
|
||||
public final PBStringField group_name;
|
||||
|
||||
public final PBStringField msg_actor_describe = PBField.initString("");
|
||||
|
||||
public final PBStringField msg_additional = PBField.initString("");
|
||||
|
||||
public final PBStringField msg_additional_list = PBField.initString("");
|
||||
|
||||
public final PBStringField msg_decided = PBField.initString("");
|
||||
|
||||
public final PBStringField msg_describe = PBField.initString("");
|
||||
|
||||
public final PBStringField msg_detail;
|
||||
|
||||
public structmsg$MsgInviteExt msg_invite_extinfo = new structmsg$MsgInviteExt();
|
||||
|
||||
public structmsg$MsgPayGroupExt msg_pay_group_extinfo = new structmsg$MsgPayGroupExt();
|
||||
|
||||
public final PBStringField msg_qna;
|
||||
|
||||
public final PBStringField msg_source = PBField.initString("");
|
||||
|
||||
public final PBStringField msg_title = PBField.initString("");
|
||||
|
||||
public final PBBytesField pic_url;
|
||||
|
||||
public final PBUInt32Field relation = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field req_uin_age;
|
||||
|
||||
public final PBBytesField req_uin_business_card;
|
||||
|
||||
public final PBInt32Field req_uin_faceid;
|
||||
|
||||
public final PBUInt32Field req_uin_gender;
|
||||
|
||||
public final PBStringField req_uin_nick;
|
||||
|
||||
public final PBBytesField req_uin_pre_remark;
|
||||
|
||||
public final PBUInt32Field reqsubtype = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field src_id = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field sub_src_id = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field sub_type = PBField.initUInt32(0);
|
||||
|
||||
public final PBStringField uid;
|
||||
|
||||
public final PBUInt32Field uint32_c2c_invite_join_group_flag;
|
||||
|
||||
public final PBUInt32Field uint32_doubt_flag;
|
||||
|
||||
public final PBUInt32Field uint32_group_flagext3;
|
||||
|
||||
public final PBUInt32Field uint32_source_flag = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt64Field uint64_discuss_uin = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt64Field uint64_eim_group_id = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt64Field uint64_group_owner_uin;
|
||||
|
||||
static {
|
||||
Integer integer = Integer.valueOf(0);
|
||||
Long long_ = Long.valueOf(0L);
|
||||
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] {
|
||||
8, 18, 26, 34, 42, 50, 56, 64, 74, 80,
|
||||
88, 96, 104, 114, 122, 128, 138, 146, 152, 160,
|
||||
168, 176, 184, 194, 202, 208, 218, 226, 232, 240,
|
||||
248, 258, 266, 274, 282, 400, 410, 418, 426, 434,
|
||||
442, 456, 466, 474, 482, 490, 506, 514, 522, 530,
|
||||
536, 544, 552, 808, 866, 882 }, new String[] {
|
||||
"sub_type", "msg_title", "msg_describe", "msg_additional", "msg_source", "msg_decided", "src_id", "sub_src_id", "actions", "group_code",
|
||||
"action_uin", "group_msg_type", "group_inviter_role", "friend_info", "group_info", "actor_uin", "msg_actor_describe", "msg_additional_list", "relation", "reqsubtype",
|
||||
"clone_uin", "uint64_discuss_uin", "uint64_eim_group_id", "msg_invite_extinfo", "msg_pay_group_extinfo", "uint32_source_flag", "bytes_game_nick", "bytes_game_msg", "uint32_group_flagext3", "uint64_group_owner_uin",
|
||||
"uint32_doubt_flag", "bytes_warning_tips", "bytes_name_more", "bytes_addtion", "bytes_transparent_group_notify", "req_uin_faceid", "req_uin_nick", "group_name", "action_uin_nick", "msg_qna",
|
||||
"msg_detail", "group_ext_flag", "actor_uin_nick", "pic_url", "clone_uin_nick", "req_uin_business_card", "eim_group_id_name", "req_uin_pre_remark", "action_uin_qq_nick", "action_uin_remark",
|
||||
"req_uin_gender", "req_uin_age", "uint32_c2c_invite_join_group_flag", "card_switch", "bytes_source_desc", "uid" }, new Object[] {
|
||||
integer, "", "", "", "", "", integer, integer, null, long_,
|
||||
long_, integer, integer, null, null, long_, "", "", integer, integer,
|
||||
long_, long_, long_, null, null, integer, byteStringMicro, byteStringMicro, integer, long_,
|
||||
integer, byteStringMicro, byteStringMicro, byteStringMicro, byteStringMicro, integer, "", "", "", "",
|
||||
"", integer, "", byteStringMicro, "", byteStringMicro, byteStringMicro, byteStringMicro, byteStringMicro, byteStringMicro,
|
||||
integer, integer, integer, integer, byteStringMicro, "" }, structmsg$SystemMsg.class);
|
||||
}
|
||||
|
||||
public structmsg$SystemMsg() {
|
||||
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
this.bytes_game_nick = PBField.initBytes(byteStringMicro);
|
||||
this.bytes_game_msg = PBField.initBytes(byteStringMicro);
|
||||
this.uint32_group_flagext3 = PBField.initUInt32(0);
|
||||
this.uint64_group_owner_uin = PBField.initUInt64(0L);
|
||||
this.uint32_doubt_flag = PBField.initUInt32(0);
|
||||
this.bytes_warning_tips = PBField.initBytes(byteStringMicro);
|
||||
this.bytes_name_more = PBField.initBytes(byteStringMicro);
|
||||
this.bytes_addtion = PBField.initBytes(byteStringMicro);
|
||||
this.bytes_transparent_group_notify = PBField.initBytes(byteStringMicro);
|
||||
this.req_uin_faceid = PBField.initInt32(0);
|
||||
this.req_uin_nick = PBField.initString("");
|
||||
this.group_name = PBField.initString("");
|
||||
this.action_uin_nick = PBField.initString("");
|
||||
this.msg_qna = PBField.initString("");
|
||||
this.msg_detail = PBField.initString("");
|
||||
this.group_ext_flag = PBField.initUInt32(0);
|
||||
this.actor_uin_nick = PBField.initString("");
|
||||
this.pic_url = PBField.initBytes(byteStringMicro);
|
||||
this.clone_uin_nick = PBField.initString("");
|
||||
this.req_uin_business_card = PBField.initBytes(byteStringMicro);
|
||||
this.eim_group_id_name = PBField.initBytes(byteStringMicro);
|
||||
this.req_uin_pre_remark = PBField.initBytes(byteStringMicro);
|
||||
this.action_uin_qq_nick = PBField.initBytes(byteStringMicro);
|
||||
this.action_uin_remark = PBField.initBytes(byteStringMicro);
|
||||
this.req_uin_gender = PBField.initUInt32(0);
|
||||
this.req_uin_age = PBField.initUInt32(0);
|
||||
this.uint32_c2c_invite_join_group_flag = PBField.initUInt32(0);
|
||||
this.card_switch = PBField.initUInt32(0);
|
||||
this.bytes_source_desc = PBField.initBytes(byteStringMicro);
|
||||
this.uid = PBField.initString("");
|
||||
}
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
package tencent.mobileim.structmsg;
|
||||
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
import com.tencent.mobileqq.pb.PBStringField;
|
||||
import com.tencent.mobileqq.pb.PBUInt32Field;
|
||||
|
||||
public final class structmsg$SystemMsgAction extends MessageMicro<structmsg$SystemMsgAction> {
|
||||
static final FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[] { 10, 18, 24, 34, 42 }, new String[] { "name", "result", "action", "action_info", "detail_name" }, new Object[] { "", "", Integer.valueOf(0), null, "" }, structmsg$SystemMsgAction.class);
|
||||
|
||||
public final PBUInt32Field action = PBField.initUInt32(0);
|
||||
|
||||
public structmsg$SystemMsgActionInfo action_info = new structmsg$SystemMsgActionInfo();
|
||||
|
||||
public final PBStringField detail_name = PBField.initString("");
|
||||
|
||||
public final PBStringField name = PBField.initString("");
|
||||
|
||||
public final PBStringField result = PBField.initString("");
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
package tencent.mobileim.structmsg;
|
||||
|
||||
import com.tencent.mobileqq.pb.ByteStringMicro;
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBBoolField;
|
||||
import com.tencent.mobileqq.pb.PBBytesField;
|
||||
import com.tencent.mobileqq.pb.PBEnumField;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
import com.tencent.mobileqq.pb.PBStringField;
|
||||
import com.tencent.mobileqq.pb.PBUInt32Field;
|
||||
import com.tencent.mobileqq.pb.PBUInt64Field;
|
||||
|
||||
public final class structmsg$SystemMsgActionInfo extends MessageMicro<structmsg$SystemMsgActionInfo> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public structmsg$AddFrdSNInfo addFrdSNInfo = new structmsg$AddFrdSNInfo();
|
||||
|
||||
public final PBBoolField blacklist = PBField.initBool(false);
|
||||
|
||||
public final PBUInt64Field group_code = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt32Field group_id = PBField.initUInt32(0);
|
||||
|
||||
public final PBStringField msg = PBField.initString("");
|
||||
|
||||
public final PBStringField remark = PBField.initString("");
|
||||
|
||||
public final PBBytesField sig = PBField.initBytes(ByteStringMicro.EMPTY);
|
||||
|
||||
public final PBEnumField type = PBField.initEnum(1);
|
||||
|
||||
public final PBUInt32Field uint32_req_msg_type = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
Integer integer = Integer.valueOf(0);
|
||||
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
Boolean bool = Boolean.FALSE;
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] { 8, 16, 26, 402, 408, 418, 424, 434, 440 }, new String[] { "type", "group_code", "sig", "msg", "group_id", "remark", "blacklist", "addFrdSNInfo", "uint32_req_msg_type" }, new Object[] { Integer.valueOf(1), Long.valueOf(0L), byteStringMicro, "", integer, "", bool, null, integer }, structmsg$SystemMsgActionInfo.class);
|
||||
}
|
||||
}
|
@ -0,0 +1,615 @@
|
||||
package tencent.mobileim.structmsg;
|
||||
|
||||
import com.tencent.mobileqq.pb.ByteStringMicro;
|
||||
import com.tencent.mobileqq.pb.MessageMicro;
|
||||
import com.tencent.mobileqq.pb.PBBoolField;
|
||||
import com.tencent.mobileqq.pb.PBBytesField;
|
||||
import com.tencent.mobileqq.pb.PBEnumField;
|
||||
import com.tencent.mobileqq.pb.PBField;
|
||||
import com.tencent.mobileqq.pb.PBInt32Field;
|
||||
import com.tencent.mobileqq.pb.PBRepeatMessageField;
|
||||
import com.tencent.mobileqq.pb.PBStringField;
|
||||
import com.tencent.mobileqq.pb.PBUInt32Field;
|
||||
import com.tencent.mobileqq.pb.PBUInt64Field;
|
||||
|
||||
public class structmsg {
|
||||
public static class ReqSystemMsgAction extends MessageMicro< ReqSystemMsgAction> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public SystemMsgActionInfo action_info = new SystemMsgActionInfo();
|
||||
|
||||
public final PBUInt32Field group_msg_type = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field language = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt64Field msg_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBEnumField msg_type = PBField.initEnum(1);
|
||||
|
||||
public final PBUInt64Field req_uin = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt32Field src_id = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field sub_src_id = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field sub_type = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
Integer integer = Integer.valueOf(0);
|
||||
Long long_ = Long.valueOf(0L);
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] { 8, 16, 24, 32, 40, 48, 56, 66, 72 }, new String[] {
|
||||
"msg_type", "msg_seq", "req_uin", "sub_type", "src_id", "sub_src_id", "group_msg_type", "action_info", "language"
|
||||
}, new Object[] { Integer.valueOf(1), long_, long_, integer, integer, integer, integer, null, integer }, ReqSystemMsgAction.class);
|
||||
}
|
||||
}
|
||||
|
||||
public static class AddFrdSNInfo extends MessageMicro<AddFrdSNInfo> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public final PBUInt32Field uint32_not_see_dynamic = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field uint32_set_sn = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
Integer integer = Integer.valueOf(0);
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] { 8, 16 }, new String[] { "uint32_not_see_dynamic", "uint32_set_sn" }, new Object[] { integer, integer }, AddFrdSNInfo.class);
|
||||
}
|
||||
}
|
||||
|
||||
public static class FlagInfo extends MessageMicro< FlagInfo> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public final PBUInt32Field FrdMsg_Discuss2ManyChat = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field FrdMsg_GetBusiCard = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field FrdMsg_NeedWaitingMsg = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field FrdMsg_uint32_need_all_unread_msg = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_GetC2cInviteJoinGroup = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_GetDisbandedByAdmin = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_GetOfficialAccount = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_GetPayInGroup = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_HiddenGrp = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_Kick_Admin = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_NeedAutoAdminWording = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_NotAllowJoinGrp_InviteNotFrd = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_WordingDown = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_get_quit_pay_group_msg_flag = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_get_transfer_group_msg_flag = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_mask_invite_auto_join = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field GrpMsg_support_invite_auto_join = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
Integer integer = Integer.valueOf(0);
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] {
|
||||
8, 16, 24, 32, 40, 48, 56, 64, 72, 80,
|
||||
88, 96, 104, 112, 120, 128, 136 }, new String[] {
|
||||
"GrpMsg_Kick_Admin", "GrpMsg_HiddenGrp", "GrpMsg_WordingDown", "FrdMsg_GetBusiCard", "GrpMsg_GetOfficialAccount", "GrpMsg_GetPayInGroup", "FrdMsg_Discuss2ManyChat", "GrpMsg_NotAllowJoinGrp_InviteNotFrd", "FrdMsg_NeedWaitingMsg", "FrdMsg_uint32_need_all_unread_msg",
|
||||
"GrpMsg_NeedAutoAdminWording", "GrpMsg_get_transfer_group_msg_flag", "GrpMsg_get_quit_pay_group_msg_flag", "GrpMsg_support_invite_auto_join", "GrpMsg_mask_invite_auto_join", "GrpMsg_GetDisbandedByAdmin", "GrpMsg_GetC2cInviteJoinGroup" }, new Object[] {
|
||||
integer, integer, integer, integer, integer, integer, integer, integer, integer, integer,
|
||||
integer, integer, integer, integer, integer, integer, integer }, FlagInfo.class);
|
||||
}
|
||||
}
|
||||
|
||||
public static class FriendInfo extends MessageMicro< FriendInfo> {
|
||||
static final FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[] { 10, 18 }, new String[] { "msg_joint_friend", "msg_blacklist" }, new Object[] { "", "" }, FriendInfo.class);
|
||||
|
||||
public final PBStringField msg_blacklist = PBField.initString("");
|
||||
|
||||
public final PBStringField msg_joint_friend = PBField.initString("");
|
||||
}
|
||||
|
||||
public static class GroupInfo extends MessageMicro< GroupInfo> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public final PBUInt32Field display_action = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field group_auth_type = PBField.initUInt32(0);
|
||||
|
||||
public final PBStringField msg_alert = PBField.initString("");
|
||||
|
||||
public final PBStringField msg_detail_alert = PBField.initString("");
|
||||
|
||||
public final PBStringField msg_other_admin_done = PBField.initString("");
|
||||
|
||||
public final PBUInt32Field uint32_app_privilege_flag = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
Integer integer = Integer.valueOf(0);
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] { 8, 16, 26, 34, 42, 48 }, new String[] { "group_auth_type", "display_action", "msg_alert", "msg_detail_alert", "msg_other_admin_done", "uint32_app_privilege_flag" }, new Object[] { integer, integer, "", "", "", integer }, GroupInfo.class);
|
||||
}
|
||||
}
|
||||
|
||||
public static class MsgInviteExt extends MessageMicro< MsgInviteExt> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public final PBUInt32Field uint32_src_type = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field uint32_wait_state = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt64Field uint64_src_code = PBField.initUInt64(0L);
|
||||
|
||||
static {
|
||||
Integer integer = Integer.valueOf(0);
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] { 8, 16, 24 }, new String[] { "uint32_src_type", "uint64_src_code", "uint32_wait_state" }, new Object[] { integer, Long.valueOf(0L), integer }, MsgInviteExt.class);
|
||||
}
|
||||
}
|
||||
|
||||
public static class MsgPayGroupExt extends MessageMicro< MsgPayGroupExt> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public final PBUInt64Field uint64_join_grp_time = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt64Field uint64_quit_grp_time = PBField.initUInt64(0L);
|
||||
|
||||
static {
|
||||
Long long_ = Long.valueOf(0L);
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] { 8, 16 }, new String[] { "uint64_join_grp_time", "uint64_quit_grp_time" }, new Object[] { long_, long_ }, MsgPayGroupExt.class);
|
||||
}
|
||||
}
|
||||
|
||||
public static class ReqNextSystemMsg extends MessageMicro< ReqNextSystemMsg> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public final PBEnumField checktype = PBField.initEnum(1);
|
||||
|
||||
public FlagInfo flag = new FlagInfo();
|
||||
|
||||
public final PBUInt64Field following_friend_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt64Field following_group_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt64Field friend_msg_type_flag = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt32Field language = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field msg_num = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field uint32_need_uid = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field uint32_req_msg_type = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field version = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
Integer integer = Integer.valueOf(0);
|
||||
Long long_ = Long.valueOf(0L);
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] { 8, 16, 24, 32, 42, 48, 56, 64, 72, 128 }, new String[] { "msg_num", "following_friend_seq", "following_group_seq", "checktype", "flag", "language", "version", "friend_msg_type_flag", "uint32_req_msg_type", "uint32_need_uid" }, new Object[] { integer, long_, long_, Integer.valueOf(1), null, integer, integer, long_, integer, integer }, ReqNextSystemMsg.class);
|
||||
}
|
||||
}
|
||||
|
||||
public static class ReqSystemMsgNew extends MessageMicro< ReqSystemMsgNew> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public final PBEnumField checktype = PBField.initEnum(1);
|
||||
|
||||
public FlagInfo flag = new FlagInfo();
|
||||
|
||||
public final PBUInt64Field friend_msg_type_flag = PBField.initUInt64(0L);
|
||||
|
||||
public final PBBoolField is_get_frd_ribbon = PBField.initBool(true);
|
||||
|
||||
public final PBBoolField is_get_grp_ribbon = PBField.initBool(true);
|
||||
|
||||
public final PBUInt32Field language = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt64Field latest_friend_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt64Field latest_group_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt32Field msg_num = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field uint32_need_uid = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field uint32_req_msg_type = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field version = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
Integer integer = Integer.valueOf(0);
|
||||
Long long_ = Long.valueOf(0L);
|
||||
Boolean bool = Boolean.TRUE;
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] {
|
||||
8, 16, 24, 32, 40, 50, 56, 64, 72, 80,
|
||||
88, 128 }, new String[] {
|
||||
"msg_num", "latest_friend_seq", "latest_group_seq", "version", "checktype", "flag", "language", "is_get_frd_ribbon", "is_get_grp_ribbon", "friend_msg_type_flag",
|
||||
"uint32_req_msg_type", "uint32_need_uid" }, new Object[] {
|
||||
integer, long_, long_, integer, Integer.valueOf(1), null, integer, bool, bool, long_,
|
||||
integer, integer }, ReqSystemMsgNew.class);
|
||||
}
|
||||
}
|
||||
|
||||
public static class ReqSystemMsgRead extends MessageMicro< ReqSystemMsgRead> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public final PBEnumField checktype = PBField.initEnum(1);
|
||||
|
||||
public final PBUInt64Field latest_friend_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt64Field latest_group_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt32Field type = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field uint32_req_msg_type = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
Long long_ = Long.valueOf(0L);
|
||||
Integer integer = Integer.valueOf(0);
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] { 8, 16, 24, 32, 40 }, new String[] { "latest_friend_seq", "latest_group_seq", "type", "checktype", "uint32_req_msg_type" }, new Object[] { long_, long_, integer, Integer.valueOf(1), integer }, ReqSystemMsgRead.class);
|
||||
}
|
||||
}
|
||||
|
||||
public static class RspHead extends MessageMicro< RspHead> {
|
||||
static final FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[] { 8, 18 }, new String[] { "result", "msg_fail" }, new Object[] { Integer.valueOf(0), "" }, RspHead.class);
|
||||
|
||||
public final PBStringField msg_fail = PBField.initString("");
|
||||
|
||||
public final PBInt32Field result = PBField.initInt32(0);
|
||||
}
|
||||
|
||||
public static class RspNextSystemMsg extends MessageMicro< RspNextSystemMsg> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public final PBStringField bytes_game_nick = PBField.initString("");
|
||||
|
||||
public final PBBytesField bytes_undecid_for_qim = PBField.initBytes(ByteStringMicro.EMPTY);
|
||||
|
||||
public final PBEnumField checktype = PBField.initEnum(1);
|
||||
|
||||
public final PBUInt64Field following_friend_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt64Field following_group_seq = PBField.initUInt64(0L);
|
||||
|
||||
public RspHead head = new RspHead();
|
||||
|
||||
public final PBRepeatMessageField< StructMsg> msgs = PBField.initRepeatMessage( StructMsg.class);
|
||||
|
||||
public final PBUInt32Field uint32_un_read_count3 = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
Long long_ = Long.valueOf(0L);
|
||||
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] { 10, 18, 24, 32, 40, 802, 810, 816 }, new String[] { "head", "msgs", "following_friend_seq", "following_group_seq", "checktype", "bytes_game_nick", "bytes_undecid_for_qim", "uint32_un_read_count3" }, new Object[] { null, null, long_, long_, Integer.valueOf(1), "", byteStringMicro, Integer.valueOf(0) }, RspNextSystemMsg.class);
|
||||
}
|
||||
}
|
||||
|
||||
public static class RspSystemMsgAction extends MessageMicro< RspSystemMsgAction> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public RspHead head = new RspHead();
|
||||
|
||||
public final PBStringField msg_detail = PBField.initString("");
|
||||
|
||||
public final PBStringField msg_invalid_decided = PBField.initString("");
|
||||
|
||||
public final PBUInt32Field remark_result = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field type = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
Integer integer = Integer.valueOf(0);
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] { 10, 18, 24, 42, 48 }, new String[] { "head", "msg_detail", "type", "msg_invalid_decided", "remark_result" }, new Object[] { null, "", integer, "", integer }, RspSystemMsgAction.class);
|
||||
}
|
||||
}
|
||||
|
||||
public static class RspSystemMsgNew extends MessageMicro< RspSystemMsgNew> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public final PBStringField bytes_game_nick = PBField.initString("");
|
||||
|
||||
public final PBBytesField bytes_undecid_for_qim = PBField.initBytes(ByteStringMicro.EMPTY);
|
||||
|
||||
public final PBEnumField checktype = PBField.initEnum(1);
|
||||
|
||||
public final PBUInt64Field following_friend_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt64Field following_group_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBRepeatMessageField< StructMsg> friendmsgs = PBField.initRepeatMessage( StructMsg.class);
|
||||
|
||||
public final PBRepeatMessageField< StructMsg> groupmsgs = PBField.initRepeatMessage( StructMsg.class);
|
||||
|
||||
public final PBStringField grp_msg_display = PBField.initString("");
|
||||
|
||||
public RspHead head = new RspHead();
|
||||
|
||||
public final PBUInt64Field latest_friend_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt64Field latest_group_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBStringField msg_display = PBField.initString("");
|
||||
|
||||
public StructMsg msg_ribbon_friend = new StructMsg();
|
||||
|
||||
public StructMsg msg_ribbon_group = new StructMsg();
|
||||
|
||||
public final PBUInt32Field uint32_has_suspicious_flag = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field uint32_over = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field uint32_un_read_count3 = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field unread_friend_count = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field unread_group_count = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
Integer integer = Integer.valueOf(0);
|
||||
Long long_ = Long.valueOf(0L);
|
||||
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] {
|
||||
10, 16, 24, 32, 40, 48, 56, 74, 82, 90,
|
||||
98, 106, 114, 120, 160, 802, 810, 816, 824 }, new String[] {
|
||||
"head", "unread_friend_count", "unread_group_count", "latest_friend_seq", "latest_group_seq", "following_friend_seq", "following_group_seq", "friendmsgs", "groupmsgs", "msg_ribbon_friend",
|
||||
"msg_ribbon_group", "msg_display", "grp_msg_display", "uint32_over", "checktype", "bytes_game_nick", "bytes_undecid_for_qim", "uint32_un_read_count3", "uint32_has_suspicious_flag" }, new Object[] {
|
||||
null, integer, integer, long_, long_, long_, long_, null, null, null,
|
||||
null, "", "", integer, Integer.valueOf(1), "", byteStringMicro, integer, integer }, RspSystemMsgNew.class);
|
||||
}
|
||||
}
|
||||
|
||||
public static class RspSystemMsgRead extends MessageMicro< RspSystemMsgRead> {
|
||||
static final FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[] { 10, 16, 24 }, new String[] { "head", "type", "checktype" }, new Object[] { null, Integer.valueOf(0), Integer.valueOf(1) }, RspSystemMsgRead.class);
|
||||
|
||||
public final PBEnumField checktype = PBField.initEnum(1);
|
||||
|
||||
public RspHead head = new RspHead();
|
||||
|
||||
public final PBUInt32Field type = PBField.initUInt32(0);
|
||||
}
|
||||
|
||||
public static class StructMsg extends MessageMicro< StructMsg> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public SystemMsg msg = new SystemMsg();
|
||||
|
||||
public final PBUInt64Field msg_seq = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt64Field msg_time = PBField.initUInt64(0L);
|
||||
|
||||
public final PBEnumField msg_type = PBField.initEnum(1);
|
||||
|
||||
public final PBUInt64Field req_uin = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt32Field uint32_unread_flag = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field version = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
Integer integer = Integer.valueOf(0);
|
||||
Long long_ = Long.valueOf(0L);
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] { 8, 16, 24, 32, 40, 48, 402 }, new String[] { "version", "msg_type", "msg_seq", "msg_time", "req_uin", "uint32_unread_flag", "msg" }, new Object[] { integer, Integer.valueOf(1), long_, long_, long_, integer, null }, StructMsg.class);
|
||||
}
|
||||
}
|
||||
|
||||
public static class SystemMsg extends MessageMicro< SystemMsg> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public final PBUInt64Field action_uin = PBField.initUInt64(0L);
|
||||
|
||||
public final PBStringField action_uin_nick;
|
||||
|
||||
public final PBBytesField action_uin_qq_nick;
|
||||
|
||||
public final PBBytesField action_uin_remark;
|
||||
|
||||
public final PBRepeatMessageField< SystemMsgAction> actions = PBField.initRepeatMessage( SystemMsgAction.class);
|
||||
|
||||
public final PBUInt64Field actor_uin = PBField.initUInt64(0L);
|
||||
|
||||
public final PBStringField actor_uin_nick;
|
||||
|
||||
public final PBBytesField bytes_addtion;
|
||||
|
||||
public final PBBytesField bytes_game_msg;
|
||||
|
||||
public final PBBytesField bytes_game_nick;
|
||||
|
||||
public final PBBytesField bytes_name_more;
|
||||
|
||||
public final PBBytesField bytes_source_desc;
|
||||
|
||||
public final PBBytesField bytes_transparent_group_notify;
|
||||
|
||||
public final PBBytesField bytes_warning_tips;
|
||||
|
||||
public final PBUInt32Field card_switch;
|
||||
|
||||
public final PBUInt64Field clone_uin = PBField.initUInt64(0L);
|
||||
|
||||
public final PBStringField clone_uin_nick;
|
||||
|
||||
public final PBBytesField eim_group_id_name;
|
||||
|
||||
public FriendInfo friend_info = new FriendInfo();
|
||||
|
||||
public final PBUInt64Field group_code = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt32Field group_ext_flag;
|
||||
|
||||
public GroupInfo group_info = new GroupInfo();
|
||||
|
||||
public final PBUInt32Field group_inviter_role = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field group_msg_type = PBField.initUInt32(0);
|
||||
|
||||
public final PBStringField group_name;
|
||||
|
||||
public final PBStringField msg_actor_describe = PBField.initString("");
|
||||
|
||||
public final PBStringField msg_additional = PBField.initString("");
|
||||
|
||||
public final PBStringField msg_additional_list = PBField.initString("");
|
||||
|
||||
public final PBStringField msg_decided = PBField.initString("");
|
||||
|
||||
public final PBStringField msg_describe = PBField.initString("");
|
||||
|
||||
public final PBStringField msg_detail;
|
||||
|
||||
public MsgInviteExt msg_invite_extinfo = new MsgInviteExt();
|
||||
|
||||
public MsgPayGroupExt msg_pay_group_extinfo = new MsgPayGroupExt();
|
||||
|
||||
public final PBStringField msg_qna;
|
||||
|
||||
public final PBStringField msg_source = PBField.initString("");
|
||||
|
||||
public final PBStringField msg_title = PBField.initString("");
|
||||
|
||||
public final PBBytesField pic_url;
|
||||
|
||||
public final PBUInt32Field relation = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field req_uin_age;
|
||||
|
||||
public final PBBytesField req_uin_business_card;
|
||||
|
||||
public final PBInt32Field req_uin_faceid;
|
||||
|
||||
public final PBUInt32Field req_uin_gender;
|
||||
|
||||
public final PBStringField req_uin_nick;
|
||||
|
||||
public final PBBytesField req_uin_pre_remark;
|
||||
|
||||
public final PBUInt32Field reqsubtype = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field src_id = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field sub_src_id = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt32Field sub_type = PBField.initUInt32(0);
|
||||
|
||||
public final PBStringField uid;
|
||||
|
||||
public final PBUInt32Field uint32_c2c_invite_join_group_flag;
|
||||
|
||||
public final PBUInt32Field uint32_doubt_flag;
|
||||
|
||||
public final PBUInt32Field uint32_group_flagext3;
|
||||
|
||||
public final PBUInt32Field uint32_source_flag = PBField.initUInt32(0);
|
||||
|
||||
public final PBUInt64Field uint64_discuss_uin = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt64Field uint64_eim_group_id = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt64Field uint64_group_owner_uin;
|
||||
|
||||
static {
|
||||
Integer integer = Integer.valueOf(0);
|
||||
Long long_ = Long.valueOf(0L);
|
||||
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] {
|
||||
8, 18, 26, 34, 42, 50, 56, 64, 74, 80,
|
||||
88, 96, 104, 114, 122, 128, 138, 146, 152, 160,
|
||||
168, 176, 184, 194, 202, 208, 218, 226, 232, 240,
|
||||
248, 258, 266, 274, 282, 400, 410, 418, 426, 434,
|
||||
442, 456, 466, 474, 482, 490, 506, 514, 522, 530,
|
||||
536, 544, 552, 808, 866, 882 }, new String[] {
|
||||
"sub_type", "msg_title", "msg_describe", "msg_additional", "msg_source", "msg_decided", "src_id", "sub_src_id", "actions", "group_code",
|
||||
"action_uin", "group_msg_type", "group_inviter_role", "friend_info", "group_info", "actor_uin", "msg_actor_describe", "msg_additional_list", "relation", "reqsubtype",
|
||||
"clone_uin", "uint64_discuss_uin", "uint64_eim_group_id", "msg_invite_extinfo", "msg_pay_group_extinfo", "uint32_source_flag", "bytes_game_nick", "bytes_game_msg", "uint32_group_flagext3", "uint64_group_owner_uin",
|
||||
"uint32_doubt_flag", "bytes_warning_tips", "bytes_name_more", "bytes_addtion", "bytes_transparent_group_notify", "req_uin_faceid", "req_uin_nick", "group_name", "action_uin_nick", "msg_qna",
|
||||
"msg_detail", "group_ext_flag", "actor_uin_nick", "pic_url", "clone_uin_nick", "req_uin_business_card", "eim_group_id_name", "req_uin_pre_remark", "action_uin_qq_nick", "action_uin_remark",
|
||||
"req_uin_gender", "req_uin_age", "uint32_c2c_invite_join_group_flag", "card_switch", "bytes_source_desc", "uid" }, new Object[] {
|
||||
integer, "", "", "", "", "", integer, integer, null, long_,
|
||||
long_, integer, integer, null, null, long_, "", "", integer, integer,
|
||||
long_, long_, long_, null, null, integer, byteStringMicro, byteStringMicro, integer, long_,
|
||||
integer, byteStringMicro, byteStringMicro, byteStringMicro, byteStringMicro, integer, "", "", "", "",
|
||||
"", integer, "", byteStringMicro, "", byteStringMicro, byteStringMicro, byteStringMicro, byteStringMicro, byteStringMicro,
|
||||
integer, integer, integer, integer, byteStringMicro, "" }, SystemMsg.class);
|
||||
}
|
||||
|
||||
public SystemMsg() {
|
||||
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
this.bytes_game_nick = PBField.initBytes(byteStringMicro);
|
||||
this.bytes_game_msg = PBField.initBytes(byteStringMicro);
|
||||
this.uint32_group_flagext3 = PBField.initUInt32(0);
|
||||
this.uint64_group_owner_uin = PBField.initUInt64(0L);
|
||||
this.uint32_doubt_flag = PBField.initUInt32(0);
|
||||
this.bytes_warning_tips = PBField.initBytes(byteStringMicro);
|
||||
this.bytes_name_more = PBField.initBytes(byteStringMicro);
|
||||
this.bytes_addtion = PBField.initBytes(byteStringMicro);
|
||||
this.bytes_transparent_group_notify = PBField.initBytes(byteStringMicro);
|
||||
this.req_uin_faceid = PBField.initInt32(0);
|
||||
this.req_uin_nick = PBField.initString("");
|
||||
this.group_name = PBField.initString("");
|
||||
this.action_uin_nick = PBField.initString("");
|
||||
this.msg_qna = PBField.initString("");
|
||||
this.msg_detail = PBField.initString("");
|
||||
this.group_ext_flag = PBField.initUInt32(0);
|
||||
this.actor_uin_nick = PBField.initString("");
|
||||
this.pic_url = PBField.initBytes(byteStringMicro);
|
||||
this.clone_uin_nick = PBField.initString("");
|
||||
this.req_uin_business_card = PBField.initBytes(byteStringMicro);
|
||||
this.eim_group_id_name = PBField.initBytes(byteStringMicro);
|
||||
this.req_uin_pre_remark = PBField.initBytes(byteStringMicro);
|
||||
this.action_uin_qq_nick = PBField.initBytes(byteStringMicro);
|
||||
this.action_uin_remark = PBField.initBytes(byteStringMicro);
|
||||
this.req_uin_gender = PBField.initUInt32(0);
|
||||
this.req_uin_age = PBField.initUInt32(0);
|
||||
this.uint32_c2c_invite_join_group_flag = PBField.initUInt32(0);
|
||||
this.card_switch = PBField.initUInt32(0);
|
||||
this.bytes_source_desc = PBField.initBytes(byteStringMicro);
|
||||
this.uid = PBField.initString("");
|
||||
}
|
||||
}
|
||||
|
||||
public static class SystemMsgAction extends MessageMicro< SystemMsgAction> {
|
||||
static final FieldMap __fieldMap__ = MessageMicro.initFieldMap(new int[] { 10, 18, 24, 34, 42 }, new String[] { "name", "result", "action", "action_info", "detail_name" }, new Object[] { "", "", Integer.valueOf(0), null, "" }, SystemMsgAction.class);
|
||||
|
||||
public final PBUInt32Field action = PBField.initUInt32(0);
|
||||
|
||||
public SystemMsgActionInfo action_info = new SystemMsgActionInfo();
|
||||
|
||||
public final PBStringField detail_name = PBField.initString("");
|
||||
|
||||
public final PBStringField name = PBField.initString("");
|
||||
|
||||
public final PBStringField result = PBField.initString("");
|
||||
}
|
||||
|
||||
public static class SystemMsgActionInfo extends MessageMicro< SystemMsgActionInfo> {
|
||||
static final FieldMap __fieldMap__;
|
||||
|
||||
public AddFrdSNInfo addFrdSNInfo = new AddFrdSNInfo();
|
||||
|
||||
public final PBBoolField blacklist = PBField.initBool(false);
|
||||
|
||||
public final PBUInt64Field group_code = PBField.initUInt64(0L);
|
||||
|
||||
public final PBUInt32Field group_id = PBField.initUInt32(0);
|
||||
|
||||
public final PBStringField msg = PBField.initString("");
|
||||
|
||||
public final PBStringField remark = PBField.initString("");
|
||||
|
||||
public final PBBytesField sig = PBField.initBytes(ByteStringMicro.EMPTY);
|
||||
|
||||
public final PBEnumField type = PBField.initEnum(1);
|
||||
|
||||
public final PBUInt32Field uint32_req_msg_type = PBField.initUInt32(0);
|
||||
|
||||
static {
|
||||
Integer integer = Integer.valueOf(0);
|
||||
ByteStringMicro byteStringMicro = ByteStringMicro.EMPTY;
|
||||
Boolean bool = Boolean.FALSE;
|
||||
__fieldMap__ = MessageMicro.initFieldMap(new int[] { 8, 16, 26, 402, 408, 418, 424, 434, 440 }, new String[] { "type", "group_code", "sig", "msg", "group_id", "remark", "blacklist", "addFrdSNInfo", "uint32_req_msg_type" }, new Object[] { Integer.valueOf(1), Long.valueOf(0L), byteStringMicro, "", integer, "", bool, null, integer }, SystemMsgActionInfo.class);
|
||||
}
|
||||
}
|
||||
}
|
@ -36,3 +36,6 @@ include(
|
||||
":xposed",
|
||||
":qqinterface"
|
||||
)
|
||||
include(":protobuf")
|
||||
include(":processor")
|
||||
include(":annotations")
|
||||
|
@ -1,9 +1,9 @@
|
||||
plugins {
|
||||
id("com.android.library")
|
||||
id("org.jetbrains.kotlin.android")
|
||||
//id("io.realm.kotlin")
|
||||
id("kotlin-kapt")
|
||||
kotlin("plugin.serialization") version "1.8.10"
|
||||
id("com.google.devtools.ksp") version "1.9.21-1.0.15"
|
||||
kotlin("plugin.serialization") version "1.9.21"
|
||||
}
|
||||
|
||||
android {
|
||||
@ -49,54 +49,48 @@ android {
|
||||
}
|
||||
}
|
||||
|
||||
kotlin {
|
||||
sourceSets.all {
|
||||
languageSettings {
|
||||
languageVersion = "2.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compileOnly ("de.robv.android.xposed:api:82")
|
||||
compileOnly (project(":qqinterface"))
|
||||
|
||||
implementation("androidx.core:core-ktx:1.9.0")
|
||||
implementation("androidx.appcompat:appcompat:1.6.1")
|
||||
implementation("com.google.android.material:material:1.9.0")
|
||||
|
||||
// 业务场景不适配
|
||||
//implementation("io.realm.kotlin:library-base:1.11.0")
|
||||
//implementation("io.realm.kotlin:library-sync:1.11.0")
|
||||
|
||||
val ktorVersion = "2.3.3"
|
||||
//implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.1")
|
||||
implementation("io.github.xn32:json5k:0.3.0")
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-io-jvm:0.1.16")
|
||||
implementation("io.ktor:ktor-server-core:$ktorVersion")
|
||||
implementation("io.ktor:ktor-server-host-common:$ktorVersion")
|
||||
implementation("io.ktor:ktor-server-status-pages:$ktorVersion")
|
||||
implementation("io.ktor:ktor-server-netty:$ktorVersion")
|
||||
implementation("io.ktor:ktor-serialization-kotlinx-json:$ktorVersion")
|
||||
implementation("io.ktor:ktor-server-content-negotiation:$ktorVersion")
|
||||
implementation("io.ktor:ktor-client-core:$ktorVersion")
|
||||
implementation("io.ktor:ktor-client-cio:$ktorVersion")
|
||||
implementation("io.ktor:ktor-client-content-negotiation:$ktorVersion")
|
||||
implementation("io.ktor:ktor-serialization-kotlinx-json:$ktorVersion")
|
||||
//implementation("io.ktor:ktor-serialization-kotlinx-protobuf:$ktorVersion")
|
||||
implementation("io.ktor:ktor-network-tls-certificates:$ktorVersion")
|
||||
|
||||
/**
|
||||
* 为什么不用Ktor的WebSocket呢?
|
||||
* 因为那玩意使用了安卓9才有的Java API
|
||||
*/
|
||||
implementation("org.java-websocket:Java-WebSocket:1.5.4")
|
||||
implementation(project(":protobuf"))
|
||||
implementation(project(":annotations"))
|
||||
ksp(project(":processor"))
|
||||
|
||||
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
|
||||
implementation("androidx.exifinterface:exifinterface:1.3.6")
|
||||
implementation("com.google.protobuf:protobuf-java:3.24.0")
|
||||
|
||||
val roomVersion = "2.5.0"
|
||||
implementation("androidx.room:room-runtime:$roomVersion")
|
||||
//annotationProcessor("androidx.room:room-compiler:$roomVersion")
|
||||
// To use Kotlin annotation processing tool (kapt)
|
||||
kapt("androidx.room:room-compiler:$roomVersion")
|
||||
// To use Kotlin Symbol Processing (KSP)
|
||||
//ksp("androidx.room:room-compiler:$roomVersion")
|
||||
// optional - Kotlin Extensions and Coroutines support for Room
|
||||
implementation("androidx.room:room-ktx:$roomVersion")
|
||||
DEPENDENCY_ANDROIDX.forEach {
|
||||
implementation(it)
|
||||
}
|
||||
implementation(DEPENDENCY_JAVA_WEBSOCKET)
|
||||
implementation(DEPENDENCY_PROTOBUF)
|
||||
implementation(DEPENDENCY_JSON5K)
|
||||
|
||||
implementation(room("runtime"))
|
||||
kapt(room("compiler"))
|
||||
implementation(room("ktx"))
|
||||
|
||||
implementation(kotlinx("io-jvm", "0.1.16"))
|
||||
implementation(kotlinx("serialization-protobuf", "1.6.2"))
|
||||
|
||||
implementation(ktor("server", "core"))
|
||||
implementation(ktor("server", "host-common"))
|
||||
implementation(ktor("server", "status-pages"))
|
||||
implementation(ktor("server", "netty"))
|
||||
implementation(ktor("server", "content-negotiation"))
|
||||
implementation(ktor("client", "core"))
|
||||
implementation(ktor("client", "content-negotiation"))
|
||||
implementation(ktor("client", "cio"))
|
||||
implementation(ktor("serialization", "kotlinx-json"))
|
||||
implementation(ktor("network", "tls-certificates"))
|
||||
|
||||
testImplementation("junit:junit:4.13.2")
|
||||
androidTestImplementation("androidx.test.ext:junit:1.1.5")
|
||||
@ -105,3 +99,4 @@ dependencies {
|
||||
androidTestImplementation("androidx.compose.ui:ui-test-junit4")
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,24 +0,0 @@
|
||||
package moe.fuqiuluo.xposed
|
||||
|
||||
import androidx.test.platform.app.InstrumentationRegistry
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
|
||||
import org.junit.Assert.*
|
||||
|
||||
/**
|
||||
* Instrumented test, which will execute on an Android device.
|
||||
*
|
||||
* See [testing documentation](http://d.android.com/tools/testing).
|
||||
*/
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class ExampleInstrumentedTest {
|
||||
@Test
|
||||
fun useAppContext() {
|
||||
// Context of the app under test.
|
||||
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
|
||||
assertEquals("moe.fuqiuluo.xposed.test", appContext.packageName)
|
||||
}
|
||||
}
|
@ -1,69 +0,0 @@
|
||||
package moe.fuqiuluo.proto
|
||||
|
||||
import com.google.protobuf.ByteString
|
||||
import moe.fuqiuluo.proto.ProtoUtils.walkPairTags
|
||||
|
||||
fun <K, V> protobufOf(vararg pairs: Pair<K, V>): ProtoMap {
|
||||
val map = ProtoMap()
|
||||
pairs.forEach {
|
||||
val (k, v) = it
|
||||
when (k) {
|
||||
is Number -> map[k.toInt()] = ProtoUtils.any2proto(v!!)
|
||||
is Pair<*, *> -> {
|
||||
val tags = walkPairTags(k)
|
||||
map.set(*tags.toIntArray(), v = ProtoUtils.any2proto(v!!))
|
||||
}
|
||||
else -> error("Not support type for tag: ${k.toString()}")
|
||||
}
|
||||
}
|
||||
return map
|
||||
}
|
||||
|
||||
fun protobufMapOf(struct: (ProtoMap) -> Unit): ProtoMap {
|
||||
val map = ProtoMap()
|
||||
struct.invoke(map)
|
||||
return map
|
||||
}
|
||||
|
||||
val Number.proto: ProtoNumber
|
||||
get() = ProtoNumber(this)
|
||||
|
||||
val ByteString.proto: ProtoByteString
|
||||
get() = ProtoByteString(this)
|
||||
|
||||
val ByteArray.proto: ProtoByteString
|
||||
get() = ProtoByteString(ByteString.copyFrom(this))
|
||||
|
||||
val String.proto: ProtoByteString
|
||||
get() = ProtoByteString(ByteString.copyFromUtf8(this))
|
||||
|
||||
val ProtoValue.asString: ByteString
|
||||
get() = (this as ProtoByteString).value
|
||||
|
||||
val ProtoValue.asNumber: Number
|
||||
get() = (this as ProtoNumber).value
|
||||
|
||||
val ProtoValue.asInt: Int
|
||||
get() = (this as ProtoNumber).value.toInt()
|
||||
|
||||
val ProtoValue.asLong: Long
|
||||
get() = (this as ProtoNumber).value.toLong()
|
||||
|
||||
val ProtoValue.asULong: Long
|
||||
get() = (this as ProtoNumber).value.toLong() and Long.MAX_VALUE
|
||||
|
||||
val ProtoValue.asMap: ProtoMap
|
||||
get() = (this as ProtoMap)
|
||||
|
||||
val ProtoValue.asList: ProtoList
|
||||
get() = (this as ProtoList)
|
||||
|
||||
val ProtoValue.asByteArray: ByteArray
|
||||
get() = if (this is ProtoMap) {
|
||||
bytes?.toByteArray() ?: toByteArray()
|
||||
} else {
|
||||
(this as ProtoByteString).toByteArray()
|
||||
}
|
||||
|
||||
val ProtoValue.asUtf8String: String
|
||||
get() = asByteArray.decodeToString()
|
@ -1,43 +0,0 @@
|
||||
package moe.fuqiuluo.proto
|
||||
|
||||
import com.google.protobuf.ByteString
|
||||
import com.google.protobuf.CodedOutputStream
|
||||
import kotlinx.serialization.json.JsonElement
|
||||
import moe.fuqiuluo.shamrock.tools.json
|
||||
import moe.fuqiuluo.shamrock.tools.toHexString
|
||||
|
||||
class ProtoByteString(
|
||||
val value: ByteString
|
||||
): ProtoValue, Iterable<Byte> by value {
|
||||
override fun toJson(): JsonElement {
|
||||
return toByteArray().toHexString().json
|
||||
}
|
||||
|
||||
override fun computeSize(tag: Int): Int {
|
||||
return CodedOutputStream.computeBytesSize(tag, value)
|
||||
}
|
||||
|
||||
override fun writeTo(output: CodedOutputStream, tag: Int) {
|
||||
output.writeBytes(tag, value)
|
||||
}
|
||||
|
||||
fun toByteArray(): ByteArray {
|
||||
return value.toByteArray()
|
||||
}
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
return this === other
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
return System.identityHashCode(this)
|
||||
}
|
||||
|
||||
fun toUtfString(): String {
|
||||
return value.toStringUtf8()
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return "ByteString(${value.toByteArray().toHexString()})"
|
||||
}
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
package moe.fuqiuluo.proto
|
||||
|
||||
import com.google.protobuf.CodedOutputStream
|
||||
import kotlinx.serialization.json.JsonElement
|
||||
import moe.fuqiuluo.shamrock.tools.jsonArray
|
||||
|
||||
class ProtoList(
|
||||
val value: ArrayList<ProtoValue>
|
||||
): ProtoValue {
|
||||
constructor(): this(arrayListOf())
|
||||
|
||||
override fun toJson(): JsonElement {
|
||||
val array = arrayListOf<JsonElement>()
|
||||
value.forEach {
|
||||
array.add(it.toJson())
|
||||
}
|
||||
return array.jsonArray
|
||||
}
|
||||
|
||||
override fun computeSize(tag: Int): Int {
|
||||
var size = 0
|
||||
value.forEach {
|
||||
size += it.computeSize(tag)
|
||||
}
|
||||
return size
|
||||
}
|
||||
|
||||
override fun add(v: ProtoValue) {
|
||||
value.add(v)
|
||||
}
|
||||
|
||||
override fun size(): Int {
|
||||
return value.size
|
||||
}
|
||||
|
||||
override fun writeTo(output: CodedOutputStream, tag: Int) {
|
||||
value.forEach {
|
||||
it.writeTo(output, tag)
|
||||
}
|
||||
}
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
return this === other
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
return System.identityHashCode(this)
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return toJson().toString()
|
||||
}
|
||||
}
|
@ -1,164 +0,0 @@
|
||||
package moe.fuqiuluo.proto
|
||||
|
||||
import com.google.protobuf.ByteString
|
||||
import com.google.protobuf.CodedOutputStream
|
||||
import com.google.protobuf.WireFormat
|
||||
import kotlinx.serialization.json.JsonElement
|
||||
import moe.fuqiuluo.shamrock.tools.jsonObject
|
||||
|
||||
class ProtoMap(
|
||||
val value: HashMap<Int, ProtoValue>,
|
||||
val bytes: ByteString?
|
||||
): ProtoValue {
|
||||
constructor(): this(hashMapOf(), null)
|
||||
constructor(value: HashMap<Int, ProtoValue>): this(value, null)
|
||||
|
||||
override fun has(vararg tags: Int): Boolean {
|
||||
var curMap: ProtoMap = this
|
||||
tags.forEachIndexed { index, tag ->
|
||||
if (tag !in curMap) {
|
||||
return false
|
||||
}
|
||||
if (index == tags.size - 1) {
|
||||
return true
|
||||
}
|
||||
curMap = curMap[tag].asMap
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
override fun contains(tag: Int): Boolean {
|
||||
return value.containsKey(tag)
|
||||
}
|
||||
|
||||
override fun set(tag: Int, v: ProtoValue) {
|
||||
if (!contains(tag)) {
|
||||
value[tag] = v
|
||||
} else {
|
||||
val oldValue = value[tag]!!
|
||||
if (oldValue is ProtoList) {
|
||||
oldValue.add(v)
|
||||
} else {
|
||||
value[tag] = ProtoList(arrayListOf(oldValue, v))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun set(tag: Int, v: Number) {
|
||||
if (!contains(tag)) {
|
||||
value[tag] = ProtoNumber(v)
|
||||
} else {
|
||||
val oldValue = value[tag]!!
|
||||
if (oldValue is ProtoList) {
|
||||
oldValue.add(v.proto)
|
||||
} else {
|
||||
value[tag] = ProtoList(arrayListOf(oldValue, v.proto))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun get(vararg tags: Int): ProtoValue {
|
||||
var curMap = value
|
||||
tags.forEachIndexed { index, tag ->
|
||||
if (index == tags.size - 1) {
|
||||
return curMap[tag] ?: error("pb[${tags.joinToString(", ")}][$index] Tag $tag not found")
|
||||
}
|
||||
curMap[tag]?.let { v ->
|
||||
if (v is ProtoMap) {
|
||||
curMap = v.value
|
||||
} else {
|
||||
return v
|
||||
}
|
||||
} ?: error("pb[${tags.joinToString(", ")}][$index] Tag $tag not found")
|
||||
}
|
||||
error("Instance is not ProtoMap for get(${tags.first()})")
|
||||
}
|
||||
|
||||
override fun size(): Int {
|
||||
return value.size
|
||||
}
|
||||
|
||||
operator fun set(vararg tags: Int, v: ProtoValue) {
|
||||
var curProtoMap: ProtoMap = this
|
||||
tags.forEachIndexed { index, tag ->
|
||||
if (index == tags.size - 1) {
|
||||
return@forEachIndexed
|
||||
}
|
||||
if (!curProtoMap.contains(tag)) {
|
||||
val tmp = ProtoMap()
|
||||
curProtoMap[tag] = tmp
|
||||
curProtoMap = tmp
|
||||
} else {
|
||||
curProtoMap = curProtoMap[tag].asMap
|
||||
}
|
||||
}
|
||||
curProtoMap[tags.last()] = v
|
||||
}
|
||||
|
||||
operator fun set(vararg tags: Int, struct: (ProtoMap) -> Unit) {
|
||||
val map = ProtoMap()
|
||||
struct.invoke(map)
|
||||
set(*tags, v = map)
|
||||
}
|
||||
|
||||
operator fun set(vararg tags: Int, v: String) {
|
||||
set(*tags, v = v.proto)
|
||||
}
|
||||
|
||||
operator fun set(vararg tags: Int, v: ByteArray) {
|
||||
set(*tags, v = v.proto)
|
||||
}
|
||||
|
||||
operator fun set(vararg tags: Int, v: Number) {
|
||||
set(*tags, v = v.proto)
|
||||
}
|
||||
|
||||
operator fun set(vararg tags: Int, v: ByteString) {
|
||||
set(*tags, v = v.proto)
|
||||
}
|
||||
|
||||
operator fun set(vararg tags: Int, v: Any) {
|
||||
set(*tags, v = ProtoUtils.any2proto(v))
|
||||
}
|
||||
|
||||
override fun toJson(): JsonElement {
|
||||
val hashMap = hashMapOf<String, JsonElement>()
|
||||
value.forEach { (tag, field) ->
|
||||
hashMap[tag.toString()] = field.toJson()
|
||||
}
|
||||
return hashMap.jsonObject
|
||||
}
|
||||
|
||||
override fun computeSize(tag: Int): Int {
|
||||
var size = CodedOutputStream.computeTagSize(tag)
|
||||
val dataSize = computeSizeDirectly()
|
||||
size += ProtoUtils.computeRawVarint32Size(dataSize)
|
||||
size += dataSize
|
||||
return size
|
||||
}
|
||||
|
||||
override fun writeTo(output: CodedOutputStream, tag: Int) {
|
||||
output.writeTag(tag, WireFormat.WIRETYPE_LENGTH_DELIMITED)
|
||||
val dataSize = computeSizeDirectly()
|
||||
output.writeUInt32NoTag(dataSize)
|
||||
value.forEach { (tag, proto) ->
|
||||
proto.writeTo(output, tag)
|
||||
}
|
||||
}
|
||||
|
||||
override fun computeSizeDirectly(): Int {
|
||||
var size = 0
|
||||
value.forEach { (tag, proto) ->
|
||||
size += proto.computeSize(tag)
|
||||
}
|
||||
return size
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return toJson().toString()
|
||||
}
|
||||
|
||||
fun toByteArray(): ByteArray {
|
||||
return ProtoUtils.encodeToByteArray(this)
|
||||
}
|
||||
}
|
@ -1,45 +0,0 @@
|
||||
package moe.fuqiuluo.proto
|
||||
|
||||
import com.google.protobuf.CodedOutputStream
|
||||
import kotlinx.serialization.json.JsonElement
|
||||
import moe.fuqiuluo.shamrock.tools.json
|
||||
|
||||
class ProtoNumber(
|
||||
val value: Number
|
||||
): ProtoValue {
|
||||
override fun toJson(): JsonElement {
|
||||
return value.json
|
||||
}
|
||||
|
||||
override fun computeSize(tag: Int): Int {
|
||||
return when (value) {
|
||||
is Int -> CodedOutputStream.computeInt32Size(tag, value)
|
||||
is Long -> CodedOutputStream.computeInt64Size(tag, value)
|
||||
is Float -> CodedOutputStream.computeFloatSize(tag, value)
|
||||
is Double -> CodedOutputStream.computeDoubleSize(tag, value)
|
||||
else -> error("ProcCodec not support number type: ${value::class.simpleName}")
|
||||
}
|
||||
}
|
||||
|
||||
override fun writeTo(output: CodedOutputStream, tag: Int) {
|
||||
when (value) {
|
||||
is Int -> output.writeInt32(tag, value)
|
||||
is Long -> output.writeInt64(tag, value)
|
||||
is Float -> output.writeFloat(tag, value)
|
||||
is Double -> output.writeDouble(tag, value)
|
||||
else -> error("ProcCodec not support number type: ${value::class.simpleName}")
|
||||
}
|
||||
}
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
return this === other
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
return System.identityHashCode(this)
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return "Number($value)"
|
||||
}
|
||||
}
|
@ -1,115 +0,0 @@
|
||||
package moe.fuqiuluo.proto
|
||||
|
||||
import com.google.protobuf.ByteString
|
||||
import com.google.protobuf.CodedOutputStream
|
||||
import com.google.protobuf.UnknownFieldSet
|
||||
|
||||
object ProtoUtils {
|
||||
fun decodeFromByteArray(data: ByteArray): ProtoMap {
|
||||
val unknownFieldSet = UnknownFieldSet.parseFrom(data)
|
||||
val dest = ProtoMap(hashMapOf(), ByteString.copyFrom(data))
|
||||
printUnknownFieldSet(unknownFieldSet, dest)
|
||||
return dest
|
||||
}
|
||||
|
||||
fun encodeToByteArray(protoMap: ProtoMap): ByteArray {
|
||||
val size = protoMap.computeSizeDirectly()
|
||||
val dest = ByteArray(size)
|
||||
val output = CodedOutputStream.newInstance(dest)
|
||||
protoMap.value.forEach { (tag, proto) ->
|
||||
proto.writeTo(output, tag)
|
||||
}
|
||||
output.checkNoSpaceLeft()
|
||||
return dest
|
||||
}
|
||||
|
||||
internal fun computeRawVarint32Size(size: Int): Int {
|
||||
if (size and -128 == 0) {
|
||||
return 1
|
||||
}
|
||||
if (size and -16384 == 0) {
|
||||
return 2
|
||||
}
|
||||
if (-2097152 and size == 0) {
|
||||
return 3
|
||||
}
|
||||
return if (size and -268435456 == 0) 4 else 5
|
||||
}
|
||||
|
||||
internal fun any2proto(any: Any): ProtoValue {
|
||||
return when(any) {
|
||||
is Number -> any.proto
|
||||
is ByteArray -> any.proto
|
||||
is String -> any.proto
|
||||
is ByteString -> any.proto
|
||||
is Array<*> -> ProtoList(arrayListOf(*any.map { any2proto(it!!) }.toTypedArray()))
|
||||
is Collection<*> -> ProtoList(arrayListOf(*any.map { any2proto(it!!) }.toTypedArray()))
|
||||
is Map<*, *> -> ProtoMap().also {
|
||||
any.forEach { (k, v) ->
|
||||
when (k) {
|
||||
is Number -> it[k.toInt()] = any2proto(v!!)
|
||||
is Pair<*, *> -> {
|
||||
val tags = walkPairTags(k)
|
||||
it.set(*tags.toIntArray(), v = any2proto(v!!))
|
||||
}
|
||||
else -> error("Not support type for tag: ${k.toString()}")
|
||||
}
|
||||
}
|
||||
}
|
||||
is Pair<*, *> -> {
|
||||
val (tag, v) = any
|
||||
val value = any2proto(v!!)
|
||||
when (tag) {
|
||||
is Pair<*, *> -> ProtoMap().apply {
|
||||
val tags = walkPairTags(tag)
|
||||
set(*tags.toIntArray(), v = value)
|
||||
}
|
||||
is Number -> ProtoMap(hashMapOf(tag.toInt() to value))
|
||||
else -> error("Not support type for tag: ${tag.toString()}")
|
||||
}
|
||||
}
|
||||
else -> error("Not support type: ${any::class.simpleName}")
|
||||
}
|
||||
}
|
||||
|
||||
fun walkPairTags(pair: Pair<*, *>, tags: MutableList<Int> = mutableListOf()): List<Int> {
|
||||
val (k, v) = pair
|
||||
if (k is Number) {
|
||||
tags.add(k.toInt())
|
||||
} else {
|
||||
walkPairTags(k as Pair<*, *>, tags)
|
||||
}
|
||||
tags.add(v as Int)
|
||||
return tags
|
||||
}
|
||||
|
||||
private fun printUnknownFieldSet(set: UnknownFieldSet, dest: ProtoMap) {
|
||||
set.asMap().forEach { (tag, field) ->
|
||||
field.varintList.forEach {
|
||||
dest[tag] = it
|
||||
}
|
||||
field.fixed32List.forEach {
|
||||
dest[tag] = it
|
||||
}
|
||||
field.fixed64List.forEach {
|
||||
dest[tag] = it
|
||||
}
|
||||
field.lengthDelimitedList.forEach {
|
||||
try {
|
||||
val unknownFieldSet = UnknownFieldSet.parseFrom(it)
|
||||
val map = ProtoMap(hashMapOf(), it)
|
||||
printUnknownFieldSet(unknownFieldSet, map)
|
||||
dest[tag] = map
|
||||
} catch (e: Throwable) {
|
||||
dest[tag] = it.proto
|
||||
}
|
||||
}
|
||||
field.groupList.forEach {
|
||||
val map = ProtoMap()
|
||||
printUnknownFieldSet(it, map)
|
||||
dest[tag] = map
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,44 +0,0 @@
|
||||
package moe.fuqiuluo.proto
|
||||
|
||||
import com.google.protobuf.CodedOutputStream
|
||||
import kotlinx.serialization.json.JsonElement
|
||||
|
||||
sealed interface ProtoValue {
|
||||
fun toJson(): JsonElement
|
||||
|
||||
fun computeSize(tag: Int): Int
|
||||
|
||||
fun writeTo(output: CodedOutputStream, tag: Int)
|
||||
|
||||
fun computeSizeDirectly(): Int {
|
||||
return 0
|
||||
}
|
||||
|
||||
fun has(vararg tags: Int): Boolean {
|
||||
return false
|
||||
}
|
||||
|
||||
operator fun contains(tag: Int): Boolean {
|
||||
return false
|
||||
}
|
||||
|
||||
operator fun set(tag: Int, v: ProtoValue) {
|
||||
return
|
||||
}
|
||||
|
||||
operator fun set(tag: Int, v: Number) {
|
||||
return
|
||||
}
|
||||
|
||||
operator fun get(vararg tags: Int): ProtoValue {
|
||||
error("Instance is not ProtoMap for (${tags.first()})")
|
||||
}
|
||||
|
||||
fun add(v: ProtoValue) {
|
||||
error("Instance is not ProtoList")
|
||||
}
|
||||
|
||||
fun size(): Int {
|
||||
return 0
|
||||
}
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
@file:OptIn(ExperimentalSerializationApi::class)
|
||||
package moe.fuqiuluo.qqinterface.entries
|
||||
|
||||
import kotlinx.serialization.ExperimentalSerializationApi
|
||||
import kotlinx.serialization.Serializable
|
@ -13,17 +13,16 @@ import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.suspendCancellableCoroutine
|
||||
import kotlinx.coroutines.withTimeoutOrNull
|
||||
import moe.fuqiuluo.proto.protobufOf
|
||||
import kotlinx.serialization.encodeToByteArray
|
||||
import kotlinx.serialization.protobuf.ProtoBuf
|
||||
import moe.fuqiuluo.shamrock.utils.PlatformUtils
|
||||
import moe.fuqiuluo.shamrock.xposed.helper.AppRuntimeFetcher
|
||||
import moe.fuqiuluo.shamrock.xposed.helper.PacketHandler
|
||||
import moe.fuqiuluo.shamrock.xposed.helper.internal.DynamicReceiver
|
||||
import moe.fuqiuluo.shamrock.xposed.helper.internal.IPCRequest
|
||||
import moe.whitechi73.protobuf.oidb.TrpcOidb
|
||||
import mqq.app.MobileQQ
|
||||
import tencent.im.oidb.oidb_sso
|
||||
import kotlin.concurrent.timer
|
||||
import kotlin.coroutines.resume
|
||||
import kotlin.coroutines.suspendCoroutine
|
||||
|
||||
internal abstract class BaseSvc {
|
||||
companion object {
|
||||
@ -95,12 +94,15 @@ internal abstract class BaseSvc {
|
||||
|
||||
fun sendTrpcOidb(cmd: String, cmdId: Int, serviceId: Int, buffer: ByteArray, seq: Int = -1) {
|
||||
val to = createToServiceMsg(cmd)
|
||||
to.putWupBuffer(protobufOf(
|
||||
1 to cmdId,
|
||||
2 to serviceId,
|
||||
4 to buffer,
|
||||
12 to 0
|
||||
).toByteArray())
|
||||
|
||||
val oidb = TrpcOidb(
|
||||
cmd = cmdId,
|
||||
service = serviceId,
|
||||
buffer = buffer,
|
||||
flag = 0
|
||||
)
|
||||
to.putWupBuffer(ProtoBuf.encodeToByteArray(oidb))
|
||||
|
||||
to.addAttribute("req_pb_protocol_flag", true)
|
||||
if (seq != -1) {
|
||||
to.addAttribute("shamrock_seq", seq)
|
||||
|
@ -1,7 +1,9 @@
|
||||
package moe.fuqiuluo.qqinterface.servlet
|
||||
|
||||
import com.tencent.mobileqq.pb.ByteStringMicro
|
||||
import moe.fuqiuluo.proto.protobufOf
|
||||
import kotlinx.serialization.decodeFromByteArray
|
||||
import kotlinx.serialization.encodeToByteArray
|
||||
import kotlinx.serialization.protobuf.ProtoBuf
|
||||
import moe.fuqiuluo.qqinterface.servlet.structures.*
|
||||
import moe.fuqiuluo.qqinterface.servlet.transfile.RichProtoSvc
|
||||
import moe.fuqiuluo.shamrock.helper.Level
|
||||
@ -10,56 +12,100 @@ import moe.fuqiuluo.shamrock.tools.EMPTY_BYTE_ARRAY
|
||||
import moe.fuqiuluo.shamrock.tools.slice
|
||||
import moe.fuqiuluo.shamrock.tools.toHexString
|
||||
import moe.fuqiuluo.shamrock.utils.DeflateTools
|
||||
import moe.whitechi73.protobuf.oidb.cmd0x6d7.CreateFolderReq
|
||||
import moe.whitechi73.protobuf.oidb.cmd0x6d7.DeleteFolderReq
|
||||
import moe.whitechi73.protobuf.oidb.cmd0x6d7.MoveFolderReq
|
||||
import moe.whitechi73.protobuf.oidb.cmd0x6d7.Oidb0x6d7ReqBody
|
||||
import moe.whitechi73.protobuf.oidb.cmd0x6d7.Oidb0x6d7RespBody
|
||||
import moe.whitechi73.protobuf.oidb.cmd0x6d7.RenameFolderReq
|
||||
import tencent.im.oidb.cmd0x6d6.oidb_0x6d6
|
||||
import tencent.im.oidb.cmd0x6d8.oidb_0x6d8
|
||||
import tencent.im.oidb.oidb_sso
|
||||
import moe.whitechi73.protobuf.group_file_common.FolderInfo as GroupFileCommonFolderInfo
|
||||
|
||||
internal object FileSvc: BaseSvc() {
|
||||
fun createFileFolder(groupId: String, folderName: String) {
|
||||
sendOidb("OidbSvc.0x6d7_0", 1751, 0, protobufOf(
|
||||
1 to mapOf(
|
||||
1 to groupId.toLong(),
|
||||
2 to 3,
|
||||
3 to "/",
|
||||
4 to folderName
|
||||
suspend fun createFileFolder(groupId: String, folderName: String, parentFolderId: String = "/"): Result<GroupFileCommonFolderInfo> {
|
||||
val data = ProtoBuf.encodeToByteArray(Oidb0x6d7ReqBody(
|
||||
createFolder = CreateFolderReq(
|
||||
groupCode = groupId.toULong(),
|
||||
appId = 3u,
|
||||
parentFolderId = parentFolderId,
|
||||
folderName = folderName
|
||||
)
|
||||
).toByteArray())
|
||||
))
|
||||
val resultBuffer = sendOidbAW("OidbSvc.0x6d7_0", 1751, 0, data)
|
||||
?: return Result.failure(Exception("unable to fetch result"))
|
||||
val oidbPkg = oidb_sso.OIDBSSOPkg()
|
||||
oidbPkg.mergeFrom(resultBuffer.slice(4))
|
||||
val rsp = ProtoBuf.decodeFromByteArray<Oidb0x6d7RespBody>(oidbPkg.bytes_bodybuffer.get().toByteArray())
|
||||
if (rsp.createFolder?.retCode != 0) {
|
||||
return Result.failure(Exception("unable to create folder: ${rsp.createFolder?.retCode}"))
|
||||
}
|
||||
return Result.success(rsp.createFolder!!.folderInfo!!)
|
||||
}
|
||||
|
||||
fun deleteGroupFolder(groupId: String, folderUid: String) {
|
||||
sendOidb("OidbSvc.0x6d7_1", 1751, 1, protobufOf(
|
||||
2 to mapOf(
|
||||
1 to groupId.toLong(),
|
||||
2 to 3,
|
||||
3 to folderUid,
|
||||
suspend fun deleteGroupFolder(groupId: String, folderUid: String): Boolean {
|
||||
val buffer = sendOidbAW("OidbSvc.0x6d7_1", 1751, 1, ProtoBuf.encodeToByteArray(Oidb0x6d7ReqBody(
|
||||
deleteFolder = DeleteFolderReq(
|
||||
groupCode = groupId.toULong(),
|
||||
appId = 3u,
|
||||
folderId = folderUid
|
||||
)
|
||||
).toByteArray())
|
||||
))) ?: return false
|
||||
val oidbPkg = oidb_sso.OIDBSSOPkg()
|
||||
oidbPkg.mergeFrom(buffer.slice(4))
|
||||
val rsp = ProtoBuf.decodeFromByteArray<Oidb0x6d7RespBody>(oidbPkg.bytes_bodybuffer.get().toByteArray())
|
||||
return rsp.deleteFolder?.retCode == 0
|
||||
}
|
||||
|
||||
fun deleteGroupFile(groupId: String, bizId: Int, fileUid: String) {
|
||||
/*
|
||||
val kernelService = NTServiceFetcher.kernelService
|
||||
val sessionService = kernelService.wrapperSession
|
||||
val richMediaService = sessionService.richMediaService
|
||||
|
||||
val result = withTimeoutOrNull(3000L) {
|
||||
suspendCancellableCoroutine {
|
||||
richMediaService.deleteGroupFile(groupId.toLong(), fileUid, bizId) { code, _, result ->
|
||||
it.resume(code to result.result)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return if (result == null) Result.failure(RuntimeException("delete group file timeout")) else Result.success(result)*/
|
||||
// 调用QQ内部实现会导致闪退!
|
||||
sendOidb("OidbSvc.0x6d6_3", 1750, 3, protobufOf(
|
||||
4 to mapOf(
|
||||
1 to groupId.toLong(),
|
||||
2 to 3,
|
||||
3 to bizId,
|
||||
4 to "/",
|
||||
5 to fileUid
|
||||
suspend fun moveGroupFolder(groupId: String, folderUid: String, newParentFolderUid: String): Boolean {
|
||||
val buffer = sendOidbAW("OidbSvc.0x6d7_2", 1751, 2, ProtoBuf.encodeToByteArray(Oidb0x6d7ReqBody(
|
||||
moveFolder = MoveFolderReq(
|
||||
groupCode = groupId.toULong(),
|
||||
appId = 3u,
|
||||
folderId = folderUid,
|
||||
parentFolderId = "/"
|
||||
)
|
||||
).toByteArray())
|
||||
))) ?: return false
|
||||
val oidbPkg = oidb_sso.OIDBSSOPkg()
|
||||
oidbPkg.mergeFrom(buffer.slice(4))
|
||||
val rsp = ProtoBuf.decodeFromByteArray<Oidb0x6d7RespBody>(oidbPkg.bytes_bodybuffer.get().toByteArray())
|
||||
return rsp.moveFolder?.retCode == 0
|
||||
}
|
||||
|
||||
suspend fun renameFolder(groupId: String, folderUid: String, name: String): Boolean {
|
||||
val buffer = sendOidbAW("OidbSvc.0x6d7_3", 1751, 3, ProtoBuf.encodeToByteArray(Oidb0x6d7ReqBody(
|
||||
renameFolder = RenameFolderReq(
|
||||
groupCode = groupId.toULong(),
|
||||
appId = 3u,
|
||||
folderId = folderUid,
|
||||
folderName = name
|
||||
)
|
||||
))) ?: return false
|
||||
val oidbPkg = oidb_sso.OIDBSSOPkg()
|
||||
oidbPkg.mergeFrom(buffer.slice(4))
|
||||
val rsp = ProtoBuf.decodeFromByteArray<Oidb0x6d7RespBody>(oidbPkg.bytes_bodybuffer.get().toByteArray())
|
||||
return rsp.renameFolder?.retCode == 0
|
||||
}
|
||||
|
||||
suspend fun deleteGroupFile(groupId: String, bizId: Int, fileUid: String): Boolean {
|
||||
val oidb0x6d6ReqBody = oidb_0x6d6.ReqBody().apply {
|
||||
delete_file_req.set(oidb_0x6d6.DeleteFileReqBody().apply {
|
||||
uint64_group_code.set(groupId.toLong())
|
||||
uint32_app_id.set(3)
|
||||
uint32_bus_id.set(bizId)
|
||||
str_parent_folder_id.set("/")
|
||||
str_file_id.set(fileUid)
|
||||
})
|
||||
}
|
||||
val result = sendOidbAW("OidbSvc.0x6d6_3", 1750, 3, oidb0x6d6ReqBody.toByteArray())
|
||||
?: return false
|
||||
val oidbPkg = oidb_sso.OIDBSSOPkg()
|
||||
oidbPkg.mergeFrom(result.slice(4))
|
||||
val rsp = oidb_0x6d6.RspBody().apply {
|
||||
mergeFrom(oidbPkg.bytes_bodybuffer.get().toByteArray())
|
||||
}
|
||||
return rsp.delete_file_rsp.int32_ret_code.get() == 0
|
||||
}
|
||||
|
||||
suspend fun getGroupFileSystemInfo(groupId: Long): FileSystemInfo {
|
||||
|
@ -16,13 +16,8 @@ import kotlinx.coroutines.suspendCancellableCoroutine
|
||||
import moe.fuqiuluo.shamrock.tools.slice
|
||||
import moe.fuqiuluo.shamrock.xposed.helper.AppRuntimeFetcher
|
||||
import mqq.app.AppRuntime
|
||||
import tencent.mobileim.structmsg.`structmsg$FlagInfo`
|
||||
import tencent.mobileim.structmsg.`structmsg$ReqSystemMsgNew`
|
||||
import tencent.mobileim.structmsg.`structmsg$RspSystemMsgNew`
|
||||
import tencent.mobileim.structmsg.structmsg
|
||||
import kotlin.coroutines.resume
|
||||
import tencent.mobileim.structmsg.`structmsg$SystemMsgActionInfo` as ActionInfo
|
||||
import tencent.mobileim.structmsg.`structmsg$AddFrdSNInfo` as AddFrdSNInfo
|
||||
import tencent.mobileim.structmsg.`structmsg$StructMsg` as StructMsg
|
||||
|
||||
internal object FriendSvc: BaseSvc() {
|
||||
|
||||
@ -43,30 +38,31 @@ internal object FriendSvc: BaseSvc() {
|
||||
if (app !is AppInterface)
|
||||
throw RuntimeException("AppRuntime cannot cast to AppInterface")
|
||||
val service = QRoute.api(IAddFriendTempApi::class.java)
|
||||
val action = ActionInfo()
|
||||
val action = structmsg.SystemMsgActionInfo()
|
||||
action.type.set(if (approve != false) 2 else 3)
|
||||
action.group_id.set(0)
|
||||
action.remark.set(remark)
|
||||
val snInfo = AddFrdSNInfo()
|
||||
val snInfo = structmsg.AddFrdSNInfo()
|
||||
snInfo.uint32_not_see_dynamic.set(if (notSee != false) 1 else 0)
|
||||
snInfo.uint32_set_sn.set(0)
|
||||
action.addFrdSNInfo.set(snInfo)
|
||||
service.sendFriendSystemMsgAction(1, msgSeq, uin, 1, 2004, 11, 0, action, 0, StructMsg(), false,
|
||||
service.sendFriendSystemMsgAction(1, msgSeq, uin, 1, 2004, 11, 0, action, 0,
|
||||
structmsg.StructMsg(), false,
|
||||
app
|
||||
)
|
||||
}
|
||||
|
||||
suspend fun requestFriendSystemMsgNew(msgNum: Int, latestFriendSeq: Long = 0, latestGroupSeq: Long = 0, retryCnt: Int = 3): List<StructMsg>? {
|
||||
suspend fun requestFriendSystemMsgNew(msgNum: Int, latestFriendSeq: Long = 0, latestGroupSeq: Long = 0, retryCnt: Int = 3): List<structmsg.StructMsg>? {
|
||||
if (retryCnt < 0) {
|
||||
return ArrayList()
|
||||
}
|
||||
val req = `structmsg$ReqSystemMsgNew`()
|
||||
val req = structmsg.ReqSystemMsgNew()
|
||||
req.msg_num.set(msgNum)
|
||||
req.latest_friend_seq.set(latestFriendSeq)
|
||||
req.latest_group_seq.set(latestGroupSeq)
|
||||
req.version.set(1000)
|
||||
req.checktype.set(2)
|
||||
val flag = `structmsg$FlagInfo`()
|
||||
val flag = structmsg.FlagInfo()
|
||||
// flag.GrpMsg_Kick_Admin.set(1)
|
||||
// flag.GrpMsg_HiddenGrp.set(1)
|
||||
// flag.GrpMsg_WordingDown.set(1)
|
||||
@ -95,7 +91,7 @@ internal object FriendSvc: BaseSvc() {
|
||||
ArrayList()
|
||||
} else {
|
||||
try {
|
||||
val msg = `structmsg$RspSystemMsgNew`()
|
||||
val msg = structmsg.RspSystemMsgNew()
|
||||
msg.mergeFrom(respBuffer.slice(4))
|
||||
return msg.friendmsgs.get()
|
||||
} catch (err: Throwable) {
|
||||
|
@ -46,10 +46,6 @@ import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.json.JsonElement
|
||||
import kotlinx.serialization.json.decodeFromStream
|
||||
import kotlinx.serialization.json.jsonObject
|
||||
import moe.fuqiuluo.proto.ProtoUtils
|
||||
import moe.fuqiuluo.proto.asInt
|
||||
import moe.fuqiuluo.proto.asUtf8String
|
||||
import moe.fuqiuluo.proto.protobufOf
|
||||
import moe.fuqiuluo.qqinterface.servlet.TicketSvc.getLongUin
|
||||
import moe.fuqiuluo.qqinterface.servlet.TicketSvc.getUin
|
||||
import moe.fuqiuluo.qqinterface.servlet.structures.GroupAtAllRemainInfo
|
||||
@ -85,17 +81,16 @@ import tencent.im.oidb.cmd0x89a.oidb_0x89a
|
||||
import tencent.im.oidb.cmd0x8a0.oidb_0x8a0
|
||||
import tencent.im.oidb.cmd0x8a7.cmd0x8a7
|
||||
import tencent.im.oidb.cmd0x8fc.Oidb_0x8fc
|
||||
import tencent.im.oidb.cmd0xeac.oidb_0xeac
|
||||
import tencent.im.oidb.cmd0xeb7.oidb_0xeb7
|
||||
import tencent.im.oidb.cmd0xed3.oidb_cmd0xed3
|
||||
import tencent.im.oidb.oidb_sso
|
||||
import tencent.im.troop.honor.troop_honor
|
||||
import tencent.mobileim.structmsg.structmsg
|
||||
import java.lang.reflect.Method
|
||||
import java.lang.reflect.Modifier
|
||||
import java.nio.ByteBuffer
|
||||
import kotlin.coroutines.resume
|
||||
import tencent.mobileim.structmsg.`structmsg$FlagInfo` as FlagInfo
|
||||
import tencent.mobileim.structmsg.`structmsg$ReqSystemMsgNew` as ReqSystemMsgNew
|
||||
import tencent.mobileim.structmsg.`structmsg$RspSystemMsgNew` as RspSystemMsgNew
|
||||
import tencent.mobileim.structmsg.`structmsg$StructMsg` as StructMsg
|
||||
|
||||
internal object GroupSvc: BaseSvc() {
|
||||
private val RefreshTroopMemberInfoLock by lazy {
|
||||
@ -155,11 +150,12 @@ internal object GroupSvc: BaseSvc() {
|
||||
}
|
||||
|
||||
fun poke(groupId: String, userId: String) {
|
||||
sendOidb("OidbSvc.0xed3", 3795, 1, protobufOf(
|
||||
1 to userId.toLong(),
|
||||
2 to groupId.toLong(),
|
||||
3 to 0
|
||||
).toByteArray())
|
||||
val req = oidb_cmd0xed3.ReqBody().apply {
|
||||
uint64_group_code.set(groupId.toLong())
|
||||
uint64_to_uin.set(userId.toLong())
|
||||
uint32_msg_seq.set(0)
|
||||
}
|
||||
sendOidb("OidbSvc.0xed3", 3795, 1, req.toByteArray())
|
||||
}
|
||||
|
||||
suspend fun getGroupMemberList(groupId: String, refresh: Boolean): Result<List<TroopMemberInfo>> {
|
||||
@ -272,19 +268,17 @@ internal object GroupSvc: BaseSvc() {
|
||||
}
|
||||
|
||||
suspend fun setEssenceMessage(groupId: Long, seq: Long, rand: Long): Pair<Boolean, String> {
|
||||
val array = protobufOf(
|
||||
1 to groupId,
|
||||
2 to seq,
|
||||
3 to rand
|
||||
).toByteArray()
|
||||
val buffer = sendOidbAW("OidbSvc.0xeac_1", 3756, 1, array)
|
||||
?: return Pair(false, "unknown error")
|
||||
val buffer = sendOidbAW("OidbSvc.0xeac_1", 3756, 1, oidb_0xeac.ReqBody().apply {
|
||||
group_code.set(groupId)
|
||||
msg_seq.set(seq.toInt())
|
||||
msg_random.set(rand.toInt())
|
||||
}.toByteArray()) ?: return Pair(false, "unknown error")
|
||||
val body = oidb_sso.OIDBSSOPkg()
|
||||
body.mergeFrom(buffer.slice(4))
|
||||
val result = ProtoUtils.decodeFromByteArray(body.bytes_bodybuffer.get().toByteArray())
|
||||
return if (result.has(1)) {
|
||||
LogCenter.log("设置群精华失败: ${result[1].asUtf8String}")
|
||||
Pair(false, "设置群精华失败: ${result[1].asUtf8String}")
|
||||
val result = oidb_0xeac.RspBody().mergeFrom(body.bytes_bodybuffer.get().toByteArray())
|
||||
return if (result.wording.has()) {
|
||||
LogCenter.log("设置群精华失败: ${result.wording.get()}")
|
||||
Pair(false, "设置群精华失败: ${result.wording.get()}")
|
||||
} else {
|
||||
LogCenter.log("设置群精华 -> $groupId: $seq")
|
||||
Pair(true, "ok")
|
||||
@ -292,26 +286,24 @@ internal object GroupSvc: BaseSvc() {
|
||||
}
|
||||
|
||||
suspend fun deleteEssenceMessage(groupId: Long, seq: Long, rand: Long): Pair<Boolean, String> {
|
||||
val array = protobufOf(
|
||||
1 to groupId,
|
||||
2 to seq,
|
||||
3 to rand
|
||||
).toByteArray()
|
||||
val buffer = sendOidbAW("OidbSvc.0xeac_2", 3756, 2, array)
|
||||
val buffer = sendOidbAW("OidbSvc.0xeac_2", 3756, 2, oidb_0xeac.ReqBody().apply {
|
||||
group_code.set(groupId)
|
||||
msg_seq.set(seq.toInt())
|
||||
msg_random.set(rand.toInt())
|
||||
}.toByteArray())
|
||||
val body = oidb_sso.OIDBSSOPkg()
|
||||
if (buffer == null) {
|
||||
return Pair(false, "unknown error")
|
||||
}
|
||||
body.mergeFrom(buffer.slice(4))
|
||||
val result = ProtoUtils.decodeFromByteArray(body.bytes_bodybuffer.get().toByteArray())
|
||||
return if (result.has(1)) {
|
||||
LogCenter.log("移除群精华失败: ${result[1].asUtf8String}")
|
||||
Pair(false, "移除群精华失败: ${result[1].asUtf8String}")
|
||||
val result = oidb_0xeac.RspBody().mergeFrom(body.bytes_bodybuffer.get().toByteArray())
|
||||
return if (result.wording.has()) {
|
||||
LogCenter.log("移除群精华失败: ${result.wording.get()}")
|
||||
Pair(false, "移除群精华失败: ${result.wording.get()}")
|
||||
} else {
|
||||
LogCenter.log("移除群精华 -> $groupId: $seq")
|
||||
Pair(true, "ok")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun setGroupAdmin(groupId: Long, userId: Long, enable: Boolean) {
|
||||
@ -550,12 +542,12 @@ internal object GroupSvc: BaseSvc() {
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun getTroopMemberInfoByUid(groupId: String, uid: String): Result<MemberInfo> {
|
||||
suspend fun getTroopMemberInfoByUid(groupId: Long, uid: String): Result<MemberInfo> {
|
||||
val kernelService = NTServiceFetcher.kernelService
|
||||
val sessionService = kernelService.wrapperSession
|
||||
val groupService = sessionService.groupService
|
||||
val info = suspendCancellableCoroutine {
|
||||
groupService.getTransferableMemberInfo(groupId.toLong()) { code, _, data ->
|
||||
groupService.getTransferableMemberInfo(groupId) { code, _, data ->
|
||||
if (code != 0) {
|
||||
it.resume(null)
|
||||
return@getTransferableMemberInfo
|
||||
@ -740,72 +732,56 @@ internal object GroupSvc: BaseSvc() {
|
||||
notSee: Boolean? = false,
|
||||
subType: String
|
||||
): Result<String>{
|
||||
// 实在找不到接口了 发pb吧
|
||||
val buffer: ByteArray
|
||||
when (subType) {
|
||||
"invite" -> {
|
||||
buffer = protobufOf(
|
||||
1 to 1,
|
||||
2 to msgSeq,
|
||||
3 to uin, // self
|
||||
4 to 1,
|
||||
5 to 3,
|
||||
6 to 10016,
|
||||
7 to 2,
|
||||
8 to mapOf(
|
||||
1 to if (approve != false) 11 else 12,
|
||||
2 to gid
|
||||
),
|
||||
9 to 1000
|
||||
).toByteArray()
|
||||
}
|
||||
"add" -> {
|
||||
buffer = protobufOf(
|
||||
1 to 2,
|
||||
2 to msgSeq,
|
||||
3 to uin,
|
||||
4 to 1,
|
||||
5 to 2,
|
||||
6 to 30024,
|
||||
7 to 1,
|
||||
8 to mapOf(
|
||||
1 to if (approve != false) 11 else 12,
|
||||
2 to gid,
|
||||
50 to msg,
|
||||
53 to if (notSee != false) 1 else 0
|
||||
),
|
||||
9 to 1000
|
||||
).toByteArray()
|
||||
}
|
||||
else -> {
|
||||
return Result.failure(Exception("不支持的sub_type"))
|
||||
}
|
||||
}
|
||||
val respBuffer = sendBufferAW("ProfileService.Pb.ReqSystemMsgAction.Group", true, buffer)
|
||||
?: return Result.failure(Exception("操作失败"))
|
||||
val result = ProtoUtils.decodeFromByteArray(respBuffer.slice(4))
|
||||
return if (result.has(1, 1)) {
|
||||
if (result[1, 1].asInt == 0) {
|
||||
Result.success(result[2].asUtf8String)
|
||||
val req = structmsg.ReqSystemMsgAction().apply {
|
||||
if (subType == "invite") {
|
||||
msg_type.set(1)
|
||||
src_id.set(3)
|
||||
sub_src_id.set(10016)
|
||||
group_msg_type.set(2)
|
||||
} else {
|
||||
Result.failure(Exception(result[1, 2].asUtf8String))
|
||||
msg_type.set(2)
|
||||
src_id.set(2)
|
||||
sub_src_id.set(30024)
|
||||
group_msg_type.set(1)
|
||||
}
|
||||
msg_seq.set(msgSeq)
|
||||
req_uin.set(uin)
|
||||
sub_type.set(1)
|
||||
action_info.set(structmsg.SystemMsgActionInfo().apply {
|
||||
type.set(if (approve != false) 11 else 12)
|
||||
group_code.set(gid)
|
||||
if (subType == "add") {
|
||||
this.msg.set(msg)
|
||||
this.blacklist.set(notSee != false)
|
||||
}
|
||||
})
|
||||
language.set(1000)
|
||||
}
|
||||
val respBuffer = sendBufferAW("ProfileService.Pb.ReqSystemMsgAction.Group", true, req.toByteArray())
|
||||
?: return Result.failure(Exception("操作失败"))
|
||||
val rsp = structmsg.RspSystemMsgAction().mergeFrom(respBuffer.slice(4))
|
||||
return if (rsp.head.result.has()) {
|
||||
if (rsp.head.result.get() == 0) {
|
||||
Result.success(rsp.msg_detail.get())
|
||||
} else {
|
||||
Result.failure(Exception(rsp.head.msg_fail.get()))
|
||||
}
|
||||
} else {
|
||||
Result.failure(Exception("操作失败"))
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun requestGroupSystemMsgNew(msgNum: Int, reqMsgType: Int = 1, latestFriendSeq: Long = 0, latestGroupSeq: Long = 0, retryCnt: Int = 5): List<StructMsg> {
|
||||
suspend fun requestGroupSystemMsgNew(msgNum: Int, reqMsgType: Int = 1, latestFriendSeq: Long = 0, latestGroupSeq: Long = 0, retryCnt: Int = 5): List<structmsg.StructMsg> {
|
||||
if (retryCnt < 0) {
|
||||
return ArrayList()
|
||||
}
|
||||
val req = ReqSystemMsgNew()
|
||||
val req = structmsg.ReqSystemMsgNew()
|
||||
req.msg_num.set(msgNum)
|
||||
req.latest_friend_seq.set(latestFriendSeq)
|
||||
req.latest_group_seq.set(latestGroupSeq)
|
||||
req.version.set(1000)
|
||||
req.checktype.set(3)
|
||||
val flag = FlagInfo()
|
||||
val flag = structmsg.FlagInfo()
|
||||
flag.GrpMsg_Kick_Admin.set(1)
|
||||
flag.GrpMsg_HiddenGrp.set(1)
|
||||
flag.GrpMsg_WordingDown.set(1)
|
||||
@ -834,7 +810,7 @@ internal object GroupSvc: BaseSvc() {
|
||||
ArrayList()
|
||||
} else {
|
||||
try {
|
||||
val msg = RspSystemMsgNew()
|
||||
val msg = structmsg.RspSystemMsgNew()
|
||||
msg.mergeFrom(respBuffer.slice(4))
|
||||
return msg.groupmsgs.get().orEmpty()
|
||||
} catch (err: Throwable) {
|
||||
@ -873,7 +849,7 @@ internal object GroupSvc: BaseSvc() {
|
||||
messageSeq = msgSeq,
|
||||
messageContent = obj["msg_content"] ?: EmptyJsonArray
|
||||
)
|
||||
val mapping = MessageHelper.getMsgMappingBySeq(MsgConstant.KCHATTYPEGROUP, msgSeq)
|
||||
val mapping = MessageHelper.getMsgMappingBySeq(MsgConstant.KCHATTYPEGROUP, groupId.toString(), msgSeq)
|
||||
if (mapping != null) {
|
||||
msg.messageId = mapping.msgHashId
|
||||
}
|
||||
|
@ -10,33 +10,36 @@ import io.ktor.utils.io.core.writeFully
|
||||
import io.ktor.utils.io.core.writeInt
|
||||
import kotlinx.coroutines.suspendCancellableCoroutine
|
||||
import kotlinx.coroutines.withTimeoutOrNull
|
||||
import moe.fuqiuluo.proto.protobufOf
|
||||
import moe.fuqiuluo.shamrock.helper.MessageHelper
|
||||
import kotlinx.serialization.encodeToByteArray
|
||||
import kotlinx.serialization.protobuf.ProtoBuf
|
||||
import moe.fuqiuluo.shamrock.remote.action.handlers.GetHistoryMsg
|
||||
import moe.fuqiuluo.shamrock.remote.service.listener.AioListener
|
||||
import moe.fuqiuluo.shamrock.tools.broadcast
|
||||
import moe.fuqiuluo.shamrock.utils.DeflateTools
|
||||
import moe.whitechi73.protobuf.message.JsonElement
|
||||
import moe.whitechi73.protobuf.message.MessageBody
|
||||
import moe.whitechi73.protobuf.message.MessageContentHead
|
||||
import moe.whitechi73.protobuf.message.MessageElement
|
||||
import moe.whitechi73.protobuf.message.MessageElementList
|
||||
import moe.whitechi73.protobuf.message.MessageHead
|
||||
import moe.whitechi73.protobuf.message.RichMessage
|
||||
import moe.whitechi73.protobuf.push.MessagePush
|
||||
import mqq.app.MobileQQ
|
||||
import kotlin.coroutines.resume
|
||||
import kotlin.coroutines.suspendCoroutine
|
||||
import kotlin.math.abs
|
||||
import kotlin.random.Random
|
||||
import kotlin.random.nextInt
|
||||
import kotlin.random.nextLong
|
||||
|
||||
internal object PacketSvc: BaseSvc() {
|
||||
/**
|
||||
* 伪造收到Json卡片消息
|
||||
*/
|
||||
suspend fun fakeSelfRecvJsonMsg(msgService: IKernelMsgService, content: String): Long {
|
||||
return fakeReceiveSelfMsg(msgService) { arrayOf(
|
||||
mapOf(
|
||||
51 to 1 to (byteArrayOf(1) + DeflateTools.compress(content.toByteArray()))
|
||||
)
|
||||
) }
|
||||
return fakeReceiveSelfMsg(msgService) {
|
||||
listOf(MessageElement(
|
||||
json = JsonElement((byteArrayOf(1) + DeflateTools.compress(content.toByteArray())))
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun fakeReceiveSelfMsg(msgService: IKernelMsgService, builder: () -> Array<Map<*, *>>): Long {
|
||||
private suspend fun fakeReceiveSelfMsg(msgService: IKernelMsgService, builder: () -> List<MessageElement>): Long {
|
||||
val latestMsg = withTimeoutOrNull(3000) {
|
||||
suspendCancellableCoroutine {
|
||||
msgService.getMsgs(Contact(MsgConstant.KCHATTYPEC2C, app.currentUid, ""), 0L, 1, true) { code, why, msgs ->
|
||||
@ -45,30 +48,33 @@ internal object PacketSvc: BaseSvc() {
|
||||
}
|
||||
}?.data?.firstOrNull()
|
||||
val msgSeq = (latestMsg?.msgSeq ?: 0) + 1
|
||||
fakeReceive("trpc.msg.olpush.OlPushService.MsgPush", 10000, protobufOf(
|
||||
1 to mapOf(
|
||||
1 to mapOf(
|
||||
1 to app.currentUin.toLong(),
|
||||
2 to app.currentUid,
|
||||
3 to 1001,
|
||||
5 to app.currentUin.toLong(),
|
||||
6 to app.currentUid
|
||||
|
||||
val msgPush = MessagePush(
|
||||
msgBody = MessageBody(
|
||||
msgHead = MessageHead(
|
||||
peer = app.longAccountUin,
|
||||
peerUid = app.currentUid,
|
||||
flag = 1001,
|
||||
receiver = app.longAccountUin,
|
||||
receiverUid = app.currentUid
|
||||
),
|
||||
2 to mapOf(
|
||||
1 to 166,
|
||||
3 to 11,
|
||||
4 to msgSeq,
|
||||
5 to msgSeq,
|
||||
6 to (System.currentTimeMillis() / 1000).toInt(),
|
||||
7 to 1,
|
||||
11 to msgSeq,
|
||||
12 to msgService.getMsgUniqueId(System.currentTimeMillis()),
|
||||
14 to msgSeq - 2,
|
||||
28 to msgSeq
|
||||
contentHead = MessageContentHead(
|
||||
msgType = 166,
|
||||
msgSubType = 11,
|
||||
msgSeq = msgSeq,
|
||||
u1 = msgSeq,
|
||||
msgTime = System.currentTimeMillis() / 1000,
|
||||
u2 = 1,
|
||||
u3 = msgSeq,
|
||||
msgRandom = msgService.getMsgUniqueId(System.currentTimeMillis()),
|
||||
u4 = msgSeq - 2,
|
||||
u5 = msgSeq
|
||||
),
|
||||
3 to 1 to 2 to builder()
|
||||
richMsg = RichMessage(MessageElementList(builder()))
|
||||
)
|
||||
).toByteArray())
|
||||
)
|
||||
|
||||
fakeReceive("trpc.msg.olpush.OlPushService.MsgPush", 10000, ProtoBuf.encodeToByteArray(msgPush))
|
||||
return withTimeoutOrNull(5000L) {
|
||||
suspendCancellableCoroutine {
|
||||
AioListener.messageLessListenerMap[msgSeq] = {
|
||||
|
@ -1,3 +1,5 @@
|
||||
@file:OptIn(ExperimentalSerializationApi::class)
|
||||
|
||||
package moe.fuqiuluo.qqinterface.servlet
|
||||
|
||||
import android.graphics.BitmapFactory
|
||||
@ -12,7 +14,9 @@ import kotlinx.coroutines.suspendCancellableCoroutine
|
||||
import kotlinx.io.core.BytePacketBuilder
|
||||
import kotlinx.io.core.readBytes
|
||||
import kotlinx.io.core.writeFully
|
||||
import moe.fuqiuluo.proto.protobufMapOf
|
||||
import kotlinx.serialization.ExperimentalSerializationApi
|
||||
import kotlinx.serialization.encodeToByteArray
|
||||
import kotlinx.serialization.protobuf.ProtoBuf
|
||||
import moe.fuqiuluo.shamrock.helper.Level
|
||||
import moe.fuqiuluo.shamrock.helper.LogCenter
|
||||
import moe.fuqiuluo.shamrock.tools.hex2ByteArray
|
||||
@ -20,6 +24,18 @@ import moe.fuqiuluo.shamrock.tools.toHexString
|
||||
import moe.fuqiuluo.shamrock.utils.DeflateTools
|
||||
import moe.fuqiuluo.shamrock.utils.MD5
|
||||
import moe.fuqiuluo.shamrock.xposed.helper.AppRuntimeFetcher
|
||||
import moe.whitechi73.protobuf.fav.WeiyunAddRichMediaReq
|
||||
import moe.whitechi73.protobuf.fav.WeiyunAuthor
|
||||
import moe.whitechi73.protobuf.fav.WeiyunCollectCommInfo
|
||||
import moe.whitechi73.protobuf.fav.WeiyunComm
|
||||
import moe.whitechi73.protobuf.fav.WeiyunCommonReq
|
||||
import moe.whitechi73.protobuf.fav.WeiyunFastUploadResourceReq
|
||||
import moe.whitechi73.protobuf.fav.WeiyunGetFavContentReq
|
||||
import moe.whitechi73.protobuf.fav.WeiyunGetFavListReq
|
||||
import moe.whitechi73.protobuf.fav.WeiyunMsgHead
|
||||
import moe.whitechi73.protobuf.fav.WeiyunPicInfo
|
||||
import moe.whitechi73.protobuf.fav.WeiyunRichMediaContent
|
||||
import moe.whitechi73.protobuf.fav.WeiyunRichMediaSummary
|
||||
import mqq.manager.TicketManager
|
||||
import oicq.wlogin_sdk.request.Ticket
|
||||
import oicq.wlogin_sdk.request.WtTicketPromise
|
||||
@ -56,40 +72,30 @@ internal object QFavSvc: BaseSvc() {
|
||||
startPos: Int,
|
||||
pageSize: Int,
|
||||
): Result<NetResp> {
|
||||
val data = protobufMapOf {
|
||||
it[1] = mapOf(
|
||||
20000 to mapOf(
|
||||
/**
|
||||
* "type", "bid", "category", "start_time", "order_type", "start_pos", "page_size", "sync_policy", "req_source"
|
||||
*/
|
||||
1 to 0,
|
||||
2 to 0,
|
||||
3 to category,
|
||||
//4 to System.currentTimeMillis() - 1000 * 60,
|
||||
//4 to System.currentTimeMillis(),
|
||||
4 to 0,
|
||||
5 to 0,
|
||||
6 to startPos,
|
||||
7 to pageSize,
|
||||
8 to 0,
|
||||
9 to 0
|
||||
val baseReq = WeiyunCommonReq(
|
||||
getFavListReq = WeiyunGetFavListReq(
|
||||
type = 0u,
|
||||
bid = 0u,
|
||||
category = category.toUInt(),
|
||||
startTime = 0u,
|
||||
orderType = 0u,
|
||||
startPos = startPos.toUInt(),
|
||||
pageSize = pageSize.toUInt(),
|
||||
syncPolicy = 0u,
|
||||
reqSource = 0u
|
||||
)
|
||||
)
|
||||
}.toByteArray()
|
||||
return sendWeiyunReq(20000, data)
|
||||
return sendWeiyunReq(20000, baseReq)
|
||||
}
|
||||
|
||||
suspend fun getItemContent(
|
||||
id: String
|
||||
): Result<NetResp> {
|
||||
val data = protobufMapOf {
|
||||
it[1] = mapOf(
|
||||
20001 to mapOf(
|
||||
1 to id
|
||||
return sendWeiyunReq(20001, WeiyunCommonReq(
|
||||
getFavContentReq = WeiyunGetFavContentReq(
|
||||
cidList = arrayListOf(id)
|
||||
)
|
||||
)
|
||||
}.toByteArray()
|
||||
return sendWeiyunReq(20001, data)
|
||||
))
|
||||
}
|
||||
|
||||
suspend fun addImageMsg(
|
||||
@ -104,57 +110,60 @@ internal object QFavSvc: BaseSvc() {
|
||||
md5: String,
|
||||
): Result<NetResp> {
|
||||
val md5Bytes = md5.hex2ByteArray()
|
||||
val data = protobufMapOf {
|
||||
it[1] = mapOf(
|
||||
20009 to mapOf(
|
||||
1 to mapOf(
|
||||
1 to 1, // bid
|
||||
2 to 1, // category
|
||||
3 to mapOf( // author
|
||||
1 to if (groupId == 0L) 1 else 2, // type
|
||||
2 to uin, // num_id
|
||||
3 to name, // str_id
|
||||
4 to groupId, // group_id
|
||||
5 to groupName // group_name
|
||||
return sendWeiyunReq(20009, WeiyunCommonReq(
|
||||
addRichMediaReq = WeiyunAddRichMediaReq(
|
||||
commInfo = WeiyunCollectCommInfo(
|
||||
bid = 1u,
|
||||
category = 1u,
|
||||
author = WeiyunAuthor(
|
||||
type = if (groupId == 0L) 1u else 2u,
|
||||
numId = uin.toULong(),
|
||||
strId = name,
|
||||
groupId = groupId.toULong(),
|
||||
groupName = groupName
|
||||
),
|
||||
4 to System.currentTimeMillis() - 2000, // create_time
|
||||
5 to System.currentTimeMillis() - 1000, // sequence
|
||||
7 to """{"recordAudioOnly":false,"audioOnly":false,"fileOnly":false}""",
|
||||
9 to 0, // original_app_id
|
||||
10 to 0 // custom_group_id
|
||||
createTime = System.currentTimeMillis().toULong() - 2000u,
|
||||
seq = System.currentTimeMillis().toULong() - 1000u,
|
||||
bizDataList = arrayListOf("""{"recordAudioOnly":false,"audioOnly":false,"fileOnly":false}""".toByteArray()),
|
||||
originalAppId = 0u,
|
||||
customGroupId = 0u
|
||||
),
|
||||
2 to mapOf(
|
||||
1 to "",
|
||||
3 to "[图片]",
|
||||
4 to mapOf(
|
||||
1 to picUrl,
|
||||
2 to md5Bytes,
|
||||
3 to md5,
|
||||
6 to width,
|
||||
7 to height,
|
||||
8 to size,
|
||||
9 to 0,
|
||||
11 to pid
|
||||
summary = WeiyunRichMediaSummary(
|
||||
title = "",
|
||||
brief = "[图片]",
|
||||
picList = arrayListOf(
|
||||
WeiyunPicInfo(
|
||||
uri = picUrl,
|
||||
md5 = md5Bytes,
|
||||
sha1 = md5.toByteArray(),
|
||||
name = "",
|
||||
note = "",
|
||||
width = width.toUInt(),
|
||||
height = height.toUInt(),
|
||||
size = size.toULong(),
|
||||
type = 0u,
|
||||
picId = pid
|
||||
)
|
||||
),
|
||||
5 to 1
|
||||
contentType = 1u
|
||||
),
|
||||
3 to mapOf(
|
||||
2 to """<img src="$picUrl" />""",
|
||||
4 to mapOf(
|
||||
1 to picUrl,
|
||||
2 to md5Bytes,
|
||||
3 to md5,
|
||||
6 to width,
|
||||
7 to height,
|
||||
8 to size,
|
||||
9 to 0,
|
||||
11 to pid
|
||||
richMediaContent = listOf(WeiyunRichMediaContent(
|
||||
rawData = """<img src="$picUrl" />""".toByteArray(),
|
||||
picList = listOf(WeiyunPicInfo(
|
||||
uri = picUrl,
|
||||
md5 = md5Bytes,
|
||||
sha1 = md5.toByteArray(),
|
||||
name = "",
|
||||
note = "",
|
||||
width = width.toUInt(),
|
||||
height = height.toUInt(),
|
||||
size = size.toULong(),
|
||||
type = 0u,
|
||||
picId = pid
|
||||
))
|
||||
))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
}.toByteArray()
|
||||
return sendWeiyunReq(20009, data)
|
||||
))
|
||||
}
|
||||
|
||||
suspend fun applyUpImageMsg(
|
||||
@ -169,29 +178,26 @@ internal object QFavSvc: BaseSvc() {
|
||||
return Result.failure(IllegalArgumentException("image file not exists"))
|
||||
}
|
||||
val md5 = MD5.genFileMd5(image.absolutePath)
|
||||
val data = protobufMapOf {
|
||||
it[1] = mapOf(
|
||||
20010 to mapOf(
|
||||
1 to mapOf(
|
||||
2 to md5,
|
||||
4 to md5.toHexString(),
|
||||
10 to mapOf( // author
|
||||
1 to if (groupId == 0L) 1 else 2, // type
|
||||
2 to uin, // num_id
|
||||
3 to name, // str_id
|
||||
4 to groupId, // group_id
|
||||
5 to groupName // group_name
|
||||
),
|
||||
6 to width, // width
|
||||
7 to height,
|
||||
8 to image.length(),
|
||||
9 to 1, // type
|
||||
11 to "/storage/emulated/0/DCIM/ShamrockUpload.jpeg" // pic_id
|
||||
return sendWeiyunReq(20010, WeiyunCommonReq(
|
||||
fastUploadResourceReq = WeiyunFastUploadResourceReq(
|
||||
picInfoList = listOf(WeiyunPicInfo(
|
||||
md5 = md5,
|
||||
name = md5.toHexString(),
|
||||
width = width.toUInt(),
|
||||
height = height.toUInt(),
|
||||
size = image.length().toULong(),
|
||||
type = 1u,
|
||||
picId = "/storage/emulated/0/DCIM/temp.jpeg",
|
||||
owner = WeiyunAuthor(
|
||||
type = if (groupId == 0L) 1u else 2u,
|
||||
numId = uin.toULong(),
|
||||
strId = name,
|
||||
groupId = groupId.toULong(),
|
||||
groupName = groupName
|
||||
)
|
||||
)),
|
||||
)
|
||||
)
|
||||
}.toByteArray()
|
||||
return sendWeiyunReq(20010, data)
|
||||
))
|
||||
}
|
||||
|
||||
suspend fun addRichMediaMsg(
|
||||
@ -202,66 +208,32 @@ internal object QFavSvc: BaseSvc() {
|
||||
time: Long = System.currentTimeMillis(),
|
||||
content: String
|
||||
): Result<NetResp> {
|
||||
val data = protobufMapOf {
|
||||
it[1] = mapOf(
|
||||
20009 to mapOf(
|
||||
1 to mapOf(
|
||||
/**
|
||||
* 1 => bid
|
||||
* 2 => category
|
||||
* 3 => author
|
||||
* 4 => create_time
|
||||
* 5 => sequence
|
||||
* 6 => biz_key
|
||||
* 7 => biz_data_list
|
||||
* 8 => share_url
|
||||
* 9 => original_app_id
|
||||
* 10 => custom_group_id
|
||||
* 506 => modify_time
|
||||
* 507 => qzone_ugc_key
|
||||
*/
|
||||
1 to 1, // bid
|
||||
2 to 1, // category
|
||||
3 to mapOf( // author
|
||||
1 to if (groupId == 0L) 1 else 2, // type
|
||||
2 to uin, // num_id
|
||||
3 to name, // str_id
|
||||
4 to groupId, // group_id
|
||||
5 to groupName // group_name
|
||||
return sendWeiyunReq(20009, WeiyunCommonReq(
|
||||
addRichMediaReq = WeiyunAddRichMediaReq(
|
||||
commInfo = WeiyunCollectCommInfo(
|
||||
bid = 1u,
|
||||
category = 1u,
|
||||
author = WeiyunAuthor(
|
||||
type = if (groupId == 0L) 1u else 2u,
|
||||
numId = uin.toULong(),
|
||||
strId = name,
|
||||
groupId = groupId.toULong(),
|
||||
groupName = groupName
|
||||
),
|
||||
4 to time - 2000, // create_time
|
||||
5 to time - 1000, // sequence
|
||||
9 to 0, // original_app_id
|
||||
10 to 0 // custom_group_id
|
||||
createTime = time.toULong() - 2000u,
|
||||
seq = time.toULong() - 1000u,
|
||||
originalAppId = 0u,
|
||||
customGroupId = 0u
|
||||
),
|
||||
2 to mapOf(
|
||||
/**
|
||||
* 1 => title
|
||||
* 2 => sub_title
|
||||
* 3 => brief
|
||||
* 4 => pic_list
|
||||
* 5 => content_type
|
||||
* 6 => original_uri
|
||||
* 7 => publisher
|
||||
* 8 => rich_media_version
|
||||
*/
|
||||
3 to content,
|
||||
5 to 1
|
||||
summary = WeiyunRichMediaSummary(
|
||||
brief = content,
|
||||
contentType = 1u
|
||||
),
|
||||
3 to mapOf(
|
||||
/**
|
||||
* 1 => rich_media
|
||||
* 2 => raw_data
|
||||
* 3 => biz_data_list
|
||||
* 4 => pic_list
|
||||
* 5 => file_list
|
||||
*/
|
||||
2 to content.textToHtml()
|
||||
richMediaContent = listOf(WeiyunRichMediaContent(
|
||||
rawData = content.textToHtml().toByteArray(),
|
||||
))
|
||||
)
|
||||
)
|
||||
)
|
||||
}.toByteArray()
|
||||
return sendWeiyunReq(20009, data)
|
||||
))
|
||||
}
|
||||
|
||||
private fun String.textToHtml(): String {
|
||||
@ -327,7 +299,7 @@ internal object QFavSvc: BaseSvc() {
|
||||
|
||||
suspend fun sendWeiyunReq(
|
||||
cmd: Int,
|
||||
body: ByteArray,
|
||||
req: WeiyunCommonReq,
|
||||
outputStream: ByteArrayOutputStream = ByteArrayOutputStream(),
|
||||
): Result<NetResp> {
|
||||
return suspendCancellableCoroutine {
|
||||
@ -346,7 +318,7 @@ internal object QFavSvc: BaseSvc() {
|
||||
}
|
||||
val pSKey = getWeiYunPSKey()
|
||||
httpNetReq.mHttpMethod = HttpNetReq.HTTP_POST
|
||||
httpNetReq.mSendData = DeflateTools.gzip(packData(packHead(cmd, pSKey), body))
|
||||
httpNetReq.mSendData = DeflateTools.gzip(packData(packHead(cmd, pSKey), ProtoBuf.encodeToByteArray(WeiyunComm(req = req))))
|
||||
httpNetReq.mOutStream = outputStream
|
||||
httpNetReq.mStartDownOffset = 0L
|
||||
httpNetReq.mReqProperties["Shamrock"] = "true"
|
||||
@ -366,39 +338,19 @@ internal object QFavSvc: BaseSvc() {
|
||||
}
|
||||
|
||||
private fun packHead(cmd: Int, pskey: String): ByteArray {
|
||||
/**
|
||||
* 1 => uin
|
||||
* 2 => seq
|
||||
* 3 => type
|
||||
* 4 => cmd
|
||||
* 5 => appid
|
||||
* 6 => version
|
||||
* 7 => nettype
|
||||
* 8 => clientip
|
||||
* 9 => encrypt
|
||||
* 10 => keytype
|
||||
* 11 => encryptkey
|
||||
* 14 => major_version
|
||||
* 15 => minor_version
|
||||
* 101 => retcode
|
||||
* 102 => retmsg
|
||||
* 103 => promptmsg
|
||||
* 111 => total_space
|
||||
* 112 => used_space
|
||||
*/
|
||||
return protobufMapOf {
|
||||
it[1] = app.longAccountUin
|
||||
it[2] = seq++ // seq
|
||||
it[3] = 1 // type
|
||||
it[4] = cmd
|
||||
it[5] = APPID
|
||||
it[6] = VERSION // VERSION
|
||||
it[7] = 3 // nettype
|
||||
it[10] = 27 // keytype
|
||||
it[11] = pskey
|
||||
it[14] = MAJOR_VERSION
|
||||
it[15] = MINOR_VERSION
|
||||
}.toByteArray()
|
||||
return ProtoBuf.encodeToByteArray(WeiyunMsgHead(
|
||||
uin = app.longAccountUin.toULong(),
|
||||
seq = seq++.toUInt(),
|
||||
type = 1u,
|
||||
cmd = cmd.toUInt(),
|
||||
appId = APPID.toUInt(),
|
||||
version = VERSION.toUInt(),
|
||||
netType = 3u,
|
||||
keyType = 27u,
|
||||
key = pskey.toByteArray(),
|
||||
majorVersion = MAJOR_VERSION.toUInt(),
|
||||
minorVersion = MINOR_VERSION.toUInt(),
|
||||
))
|
||||
}
|
||||
|
||||
private fun packData(head: ByteArray, body: ByteArray): ByteArray {
|
||||
|
@ -1,12 +1,9 @@
|
||||
package moe.fuqiuluo.qqinterface.servlet
|
||||
|
||||
import com.tencent.mobileqq.app.QQAppInterface
|
||||
import com.tencent.mobileqq.pskey.oidb.cmd0x102a.oidb_cmd0x102a
|
||||
import io.ktor.client.request.get
|
||||
import io.ktor.client.request.header
|
||||
import moe.fuqiuluo.proto.ProtoUtils
|
||||
import moe.fuqiuluo.proto.asUtf8String
|
||||
import moe.fuqiuluo.proto.protobufOf
|
||||
import moe.fuqiuluo.qqinterface.servlet.BaseSvc
|
||||
import moe.fuqiuluo.shamrock.tools.GlobalClientNoRedirect
|
||||
import moe.fuqiuluo.shamrock.tools.slice
|
||||
import mqq.app.MobileQQ
|
||||
@ -108,26 +105,22 @@ internal object TicketSvc: BaseSvc() {
|
||||
return manager.getSuperkey(uin) ?: ""
|
||||
}
|
||||
|
||||
suspend fun getLessPSKey(domain: String): String? {
|
||||
val resp = sendOidbAW("OidbSvcTcp.0x102a", 4138, 0, protobufOf(
|
||||
1 to arrayOf(domain),
|
||||
//2 to 3
|
||||
).toByteArray()) ?: return null
|
||||
|
||||
suspend fun getLessPSKey(vararg domain: String): Result<List<oidb_cmd0x102a.PSKey>> {
|
||||
val req = oidb_cmd0x102a.GetPSkeyRequest()
|
||||
req.domains.set(domain.toList())
|
||||
val buffer = sendOidbAW("OidbSvcTcp.0x102a", 4138, 0, req.toByteArray())
|
||||
?: return Result.failure(Exception("getLessPSKey failed"))
|
||||
val body = oidb_sso.OIDBSSOPkg()
|
||||
body.mergeFrom(resp.slice(4))
|
||||
|
||||
val pb = ProtoUtils.decodeFromByteArray(body.bytes_bodybuffer.get().toByteArray())
|
||||
return if (pb.has(1, 2)) {
|
||||
pb[1][2].asUtf8String
|
||||
} else {
|
||||
null
|
||||
}
|
||||
body.mergeFrom(buffer.slice(4))
|
||||
val rsp = oidb_cmd0x102a.GetPSkeyResponse().mergeFrom(body.bytes_bodybuffer.get().toByteArray())
|
||||
return Result.success(rsp.private_keys.get())
|
||||
}
|
||||
|
||||
suspend fun getPSKey(uin: String, domain: String): String? {
|
||||
return (app.getManager(QQAppInterface.TICKET_MANAGER) as TicketManager).getPskey(uin, domain).let {
|
||||
if (it.isNullOrBlank()) getLessPSKey(domain) else it
|
||||
if (it.isNullOrBlank())
|
||||
getLessPSKey(domain).getOrNull()?.firstOrNull()?.key?.get()
|
||||
else it
|
||||
}
|
||||
}
|
||||
|
||||
@ -141,7 +134,7 @@ internal object TicketSvc: BaseSvc() {
|
||||
var url = "https://ui.ptlogin2.qq.com/cgi-bin/login?pt_hide_ad=1&style=9&appid=$appid&pt_no_auth=1&pt_wxtest=1&daid=$daid&s_url=$jumpurl"
|
||||
var cookie = GlobalClientNoRedirect.get(url).headers.getAll("Set-Cookie")?.joinToString(";")
|
||||
url = "https://ssl.ptlogin2.qq.com/jump?u1=$jumpurl&pt_report=1&daid=$daid&style=9&keyindex=19&clientuin=$uin&clientkey=$clientkey"
|
||||
var head = GlobalClientNoRedirect.get(url) {
|
||||
GlobalClientNoRedirect.get(url) {
|
||||
header("Cookie", cookie)
|
||||
}.let {
|
||||
cookie = it.headers.getAll("Set-Cookie")?.joinToString(";")
|
||||
|
@ -1,20 +1,12 @@
|
||||
package moe.fuqiuluo.qqinterface.servlet.transfile
|
||||
|
||||
import com.tencent.av.utils.api.IAudioHelperApi
|
||||
import com.tencent.mobileqq.qroute.QRoute
|
||||
import com.tencent.mobileqq.pb.ByteStringMicro
|
||||
import com.tencent.mobileqq.transfile.FileMsg
|
||||
import com.tencent.mobileqq.transfile.api.IProtoReqManager
|
||||
import com.tencent.mobileqq.transfile.protohandler.RichProto
|
||||
import com.tencent.mobileqq.transfile.protohandler.RichProtoProc
|
||||
import kotlinx.coroutines.suspendCancellableCoroutine
|
||||
import moe.fuqiuluo.proto.ProtoUtils
|
||||
import moe.fuqiuluo.proto.asByteArray
|
||||
import moe.fuqiuluo.proto.asInt
|
||||
import moe.fuqiuluo.proto.asList
|
||||
import moe.fuqiuluo.proto.asUtf8String
|
||||
import moe.fuqiuluo.proto.protobufOf
|
||||
import moe.fuqiuluo.qqinterface.servlet.BaseSvc
|
||||
import moe.fuqiuluo.shamrock.helper.ContactHelper
|
||||
import moe.fuqiuluo.shamrock.helper.Level
|
||||
import moe.fuqiuluo.shamrock.helper.LogCenter
|
||||
import moe.fuqiuluo.shamrock.tools.hex2ByteArray
|
||||
@ -23,6 +15,9 @@ import moe.fuqiuluo.shamrock.tools.toHexString
|
||||
import moe.fuqiuluo.shamrock.utils.PlatformUtils
|
||||
import moe.fuqiuluo.shamrock.xposed.helper.AppRuntimeFetcher
|
||||
import mqq.app.MobileQQ
|
||||
import tencent.im.cs.cmd0x346.cmd0x346
|
||||
import tencent.im.oidb.cmd0x6d6.oidb_0x6d6
|
||||
import tencent.im.oidb.cmd0xe37.cmd0xe37
|
||||
import tencent.im.oidb.oidb_sso
|
||||
import kotlin.coroutines.resume
|
||||
|
||||
@ -32,27 +27,29 @@ internal object RichProtoSvc: BaseSvc() {
|
||||
fileId: String,
|
||||
bizId: Int = 102
|
||||
): String {
|
||||
val buffer = sendOidbAW("OidbSvcTrpcTcp.0x6d6_2", 1750, 2, protobufOf(
|
||||
3 to mapOf(
|
||||
1 to peerId,
|
||||
2 to 3,
|
||||
3 to bizId,
|
||||
4 to fileId,
|
||||
)
|
||||
).toByteArray())
|
||||
val buffer = sendOidbAW("OidbSvcTrpcTcp.0x6d6_2", 1750, 2, oidb_0x6d6.ReqBody().apply {
|
||||
download_file_req.set(oidb_0x6d6.DownloadFileReqBody().apply {
|
||||
uint64_group_code.set(peerId)
|
||||
uint32_app_id.set(3)
|
||||
uint32_bus_id.set(bizId)
|
||||
str_file_id.set(fileId)
|
||||
})
|
||||
}.toByteArray())
|
||||
if (buffer == null) {
|
||||
return ""
|
||||
} else {
|
||||
val body = oidb_sso.OIDBSSOPkg()
|
||||
body.mergeFrom(buffer.slice(4))
|
||||
val result = ProtoUtils.decodeFromByteArray(body.bytes_bodybuffer.get().toByteArray())
|
||||
|
||||
if (body.uint32_result.get() != 0 || result[3, 1].asInt != 0) {
|
||||
val result = oidb_0x6d6.RspBody().mergeFrom(body.bytes_bodybuffer.get().toByteArray())
|
||||
if (body.uint32_result.get() != 0
|
||||
|| result.download_file_rsp.int32_ret_code.get() != 0) {
|
||||
return ""
|
||||
}
|
||||
|
||||
val domain = if (result.has(3, 5)) ("https://" + result[3, 4].asUtf8String) else ("http://" + result[3, 5].asUtf8String)
|
||||
val downloadUrl = result[3, 6].asByteArray.toHexString()
|
||||
val domain = if (!result.download_file_rsp.str_download_dns.has())
|
||||
("https://" + result.download_file_rsp.str_download_ip.get())
|
||||
else ("http://" + result.download_file_rsp.str_download_dns.get())
|
||||
val downloadUrl = result.download_file_rsp.bytes_download_url.get().toByteArray().toHexString()
|
||||
val appId = MobileQQ.getMobileQQ().appId
|
||||
val version = PlatformUtils.getQQVersion(MobileQQ.getContext())
|
||||
|
||||
@ -65,23 +62,25 @@ internal object RichProtoSvc: BaseSvc() {
|
||||
subId: String,
|
||||
retryCnt: Int = 0
|
||||
): String {
|
||||
val buffer = sendOidbAW("OidbSvc.0xe37_1200", 3639, 1200, protobufOf(
|
||||
1 to 1200,
|
||||
2 to 1 /* QRoute.api(IAudioHelperApi::class.java).genDebugSeq().toInt() */, /* seq */
|
||||
14 to mapOf(
|
||||
10 to app.longAccountUin,
|
||||
20 to fileId,
|
||||
30 to 2, /* ver */
|
||||
60 to subId,
|
||||
601 to 0
|
||||
),
|
||||
101 to 3, // uint32_business_id
|
||||
102 to 104, /* client_type */
|
||||
200 to 1, /* uint32_flag_support_mediaplatform */
|
||||
99999 to mapOf(
|
||||
90200 to 1 // uint32_download_url_type
|
||||
)
|
||||
).toByteArray())
|
||||
val buffer = sendOidbAW("OidbSvc.0xe37_1200", 3639, 1200, cmd0xe37.Req0xe37().apply {
|
||||
bytes_cmd_0x346_req_body.set(ByteStringMicro.copyFrom(cmd0x346.ReqBody().apply {
|
||||
uint32_cmd.set(1200)
|
||||
uint32_seq.set(1)
|
||||
msg_apply_download_req.set(cmd0x346.ApplyDownloadReq().apply {
|
||||
uint64_uin.set(app.longAccountUin)
|
||||
bytes_uuid.set(ByteStringMicro.copyFrom(fileId.toByteArray()))
|
||||
uint32_owner_type.set(2)
|
||||
str_fileidcrc.set(subId)
|
||||
|
||||
})
|
||||
uint32_business_id.set(3)
|
||||
uint32_client_type.set(104)
|
||||
uint32_flag_support_mediaplatform.set(1)
|
||||
msg_extension_req.set(cmd0x346.ExtensionReq().apply {
|
||||
uint32_download_url_type.set(1)
|
||||
})
|
||||
}.toByteArray()))
|
||||
}.toByteArray())
|
||||
|
||||
if (buffer == null) {
|
||||
if (retryCnt < 3) {
|
||||
@ -91,17 +90,19 @@ internal object RichProtoSvc: BaseSvc() {
|
||||
} else {
|
||||
val body = oidb_sso.OIDBSSOPkg()
|
||||
body.mergeFrom(buffer.slice(4))
|
||||
val result = ProtoUtils.decodeFromByteArray(body.bytes_bodybuffer.get().toByteArray())
|
||||
|
||||
if (body.uint32_result.get() != 0 || result[14, 10].asInt != 0) {
|
||||
val result = cmd0x346.RspBody().mergeFrom(cmd0xe37.Resp0xe37().mergeFrom(
|
||||
body.bytes_bodybuffer.get().toByteArray()
|
||||
).bytes_cmd_0x346_rsp_body.get().toByteArray())
|
||||
if (body.uint32_result.get() != 0 ||
|
||||
result.msg_apply_download_rsp.int32_ret_code.has() && result.msg_apply_download_rsp.int32_ret_code.get() != 0) {
|
||||
return ""
|
||||
}
|
||||
|
||||
val oldData = result[14, 30]
|
||||
val oldData = result.msg_apply_download_rsp.msg_download_info
|
||||
//val newData = result[14, 40] NTQQ 文件信息
|
||||
|
||||
val domain = if (oldData.has(90)) ("https://" + oldData[90].asUtf8String) else ("http://" + oldData[60].asList.value.first().asUtf8String)
|
||||
val params = oldData[50].asUtf8String
|
||||
val domain = if (oldData.str_download_dns.has()) ("https://" + oldData.str_download_dns.get()) else ("http://" + oldData.rpt_str_downloadip_list.get().first())
|
||||
val params = oldData.str_download_url.get()
|
||||
val appId = MobileQQ.getMobileQQ().appId
|
||||
val version = PlatformUtils.getQQVersion(MobileQQ.getContext())
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user