正在查看: Kreate v1.5.0 应用的 KizzyRPC.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: Kreate v1.5.0 应用的 KizzyRPC.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package com.my.kizzyrpc;
import android.util.Log;
import androidx.collection.ArrayMap;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.my.kizzyrpc.KizzyRPC;
import com.my.kizzyrpc.model.Activity;
import com.my.kizzyrpc.model.D;
import com.my.kizzyrpc.model.Data;
import com.my.kizzyrpc.model.HeartBeat;
import com.my.kizzyrpc.model.Identify;
import com.my.kizzyrpc.model.Properties;
import com.my.kizzyrpc.model.Resume;
import com.my.kizzyrpc.model.RichPresence;
import com.my.kizzyrpc.model.RichPresenceData;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Map;
import javax.net.ssl.SSLParameters;
import kotlin.Metadata;
import kotlin.collections.CollectionsKt;
import kotlin.jvm.internal.Intrinsics;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
@Metadata(d1 = {"\u0000V\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0010\u000e\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\b\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000b\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0006\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0002\b\u0005\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\t\n\u0002\b\u0004\u0018\u00002\u00020\u0001:\u0001%B\r\u0012\u0006\u0010\u0002\u001a\u00020\u0003¢\u0006\u0002\u0010\u0004J\u0006\u0010\u0018\u001a\u00020\u0019J\b\u0010\u001a\u001a\u00020\u0019H\u0002J\u0006\u0010\u001b\u001a\u00020\u000eJ\u0006\u0010\u001c\u001a\u00020\u0019J\"\u0010\u001d\u001a\u00020\u00192\u0006\u0010\u001e\u001a\u00020\u001f2\b\b\u0002\u0010 \u001a\u00020\u00032\b\b\u0002\u0010!\u001a\u00020\"J\u0016\u0010#\u001a\u00020\u0019*\u0004\u0018\u00010\u00172\u0006\u0010$\u001a\u00020\u0001H\u0002R\u000e\u0010\u0005\u001a\u00020\u0006X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u0007\u001a\u00020\bX\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\t\u001a\u00020\nX\u0082\u000e¢\u0006\u0002\n\u0000R\u0010\u0010\u000b\u001a\u0004\u0018\u00010\fX\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\r\u001a\u00020\u000eX\u0082\u000e¢\u0006\u0002\n\u0000R\u0010\u0010\u000f\u001a\u0004\u0018\u00010\u0010X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u0011\u001a\u00020\bX\u0082\u000e¢\u0006\u0002\n\u0000R\u0010\u0010\u0012\u001a\u0004\u0018\u00010\u0003X\u0082\u000e¢\u0006\u0002\n\u0000R\u001a\u0010\u0002\u001a\u00020\u0003X\u0086\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b\u0013\u0010\u0014\"\u0004\b\u0015\u0010\u0004R\u0010\u0010\u0016\u001a\u0004\u0018\u00010\u0017X\u0082\u000e¢\u0006\u0002\n\u0000¨\u0006&"}, d2 = {"Lcom/my/kizzyrpc/KizzyRPC;", "", "token", "", "(Ljava/lang/String;)V", "gson", "Lcom/google/gson/Gson;", "heartbeatInterval", "", "heartbeatRunnable", "Ljava/lang/Runnable;", "heartbeatThr", "Ljava/lang/Thread;", "reconnectSession", "", "rpc", "Lcom/my/kizzyrpc/model/RichPresence;", "seq", "sessionId", "getToken", "()Ljava/lang/String;", "setToken", "webSocketClient", "Lorg/java_websocket/client/WebSocketClient;", "closeRPC", "", "createWebsocketClient", "isRpcRunning", "sendIdentify", "setActivity", "activity", "Lcom/my/kizzyrpc/model/Activity;", "status", "since", "", "send", "src", "Websocket", "KizzyRPC_release"}, k = 1, mv = {1, 7, 1}, xi = 48)
public final class KizzyRPC {
private Gson gson;
private int heartbeatInterval;
private Runnable heartbeatRunnable;
private Thread heartbeatThr;
private boolean reconnectSession;
private RichPresence rpc;
private int seq;
private String sessionId;
private String token;
private WebSocketClient webSocketClient;
public KizzyRPC(String str) {
Intrinsics.checkNotNullParameter(str, "token");
this.token = str;
Gson create = new GsonBuilder().setPrettyPrinting().create();
Intrinsics.checkNotNullExpressionValue(create, "GsonBuilder().setPrettyPrinting().create()");
this.gson = create;
this.heartbeatRunnable = new Runnable() {
@Override
public final void run() {
KizzyRPC._init_$lambda$0(KizzyRPC.this);
}
};
}
public final String getToken() {
return this.token;
}
public final void setToken(String str) {
Intrinsics.checkNotNullParameter(str, "<set-?>");
this.token = str;
}
public final void closeRPC() {
Thread thread = this.heartbeatThr;
if (thread != null) {
Intrinsics.checkNotNull(thread);
if (!thread.isInterrupted()) {
Thread thread2 = this.heartbeatThr;
Intrinsics.checkNotNull(thread2);
thread2.interrupt();
}
}
WebSocketClient webSocketClient = this.webSocketClient;
if (webSocketClient != null) {
Intrinsics.checkNotNull(webSocketClient);
webSocketClient.close(1000);
}
}
public final boolean isRpcRunning() {
WebSocketClient webSocketClient = this.webSocketClient;
return webSocketClient != null && webSocketClient.isOpen();
}
public static void setActivity$default(KizzyRPC kizzyRPC, Activity activity, String str, long j, int i, Object obj) {
if ((i & 2) != 0) {
str = "online";
}
if ((i & 4) != 0) {
j = System.currentTimeMillis();
}
kizzyRPC.setActivity(activity, str, j);
}
public final void setActivity(Activity activity, String status, long since) {
Intrinsics.checkNotNullParameter(activity, "activity");
Intrinsics.checkNotNullParameter(status, "status");
this.rpc = new RichPresence(new RichPresenceData(CollectionsKt.listOf(activity), false, Long.valueOf(since), status), 3);
createWebsocketClient();
}
public final void sendIdentify() {
Log.d("KizzyRPC", "sendIdentify() called");
WebSocketClient webSocketClient = this.webSocketClient;
Intrinsics.checkNotNull(webSocketClient);
send(webSocketClient, new Identify(new Data(65, false, 100, new Properties("Discord Client", "disco", "Windows"), this.token), 2));
}
private final void createWebsocketClient() {
try {
Websocket websocket = new Websocket(this, new URI("wss://gateway.discord.gg/?encoding=json&v=10"), new ArrayMap());
this.webSocketClient = websocket;
Intrinsics.checkNotNull(websocket, "null cannot be cast to non-null type com.my.kizzyrpc.KizzyRPC.Websocket");
websocket.connect();
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
public static final void _init_$lambda$0(KizzyRPC kizzyRPC) {
Intrinsics.checkNotNullParameter(kizzyRPC, "this$0");
try {
int i = kizzyRPC.heartbeatInterval;
if (i < 10000) {
throw new RuntimeException("invalid");
}
Thread.sleep(i);
WebSocketClient webSocketClient = kizzyRPC.webSocketClient;
int i2 = kizzyRPC.seq;
kizzyRPC.send(webSocketClient, new HeartBeat(1, i2 == 0 ? "null" : String.valueOf(i2)));
} catch (InterruptedException unused) {
}
}
@Metadata(d1 = {"\u0000N\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0010\u000e\n\u0002\b\u0003\n\u0002\u0010\u0002\n\u0000\n\u0002\u0010\b\n\u0002\b\u0002\n\u0002\u0010\u000b\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0004\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0003\b\u0086\u0004\u0018\u00002\u00020\u0001B!\u0012\u0006\u0010\u0002\u001a\u00020\u0003\u0012\u0012\u0010\u0004\u001a\u000e\u0012\u0004\u0012\u00020\u0006\u0012\u0004\u0012\u00020\u00060\u0005¢\u0006\u0002\u0010\u0007J \u0010\t\u001a\u00020\n2\u0006\u0010\u000b\u001a\u00020\f2\u0006\u0010\r\u001a\u00020\u00062\u0006\u0010\u000e\u001a\u00020\u000fH\u0016J\u0014\u0010\u0010\u001a\u00020\n2\n\u0010\u0011\u001a\u00060\u0012j\u0002`\u0013H\u0016J\u0010\u0010\u0014\u001a\u00020\n2\u0006\u0010\u0015\u001a\u00020\u0006H\u0016J\u0012\u0010\u0016\u001a\u00020\n2\b\u0010\u0017\u001a\u0004\u0018\u00010\u0018H\u0016J\u0010\u0010\u0019\u001a\u00020\n2\u0006\u0010\u001a\u001a\u00020\u001bH\u0014J\u0012\u0010\u001c\u001a\u00020\n2\b\u0010\u001d\u001a\u0004\u0018\u00010\u0006H\u0016R\u000e\u0010\b\u001a\u00020\u0006X\u0082\u000e¢\u0006\u0002\n\u0000¨\u0006\u001e"}, d2 = {"Lcom/my/kizzyrpc/KizzyRPC$Websocket;", "Lorg/java_websocket/client/WebSocketClient;", "uri", "Ljava/net/URI;", "map", "Landroidx/collection/ArrayMap;", "", "(Lcom/my/kizzyrpc/KizzyRPC;Ljava/net/URI;Landroidx/collection/ArrayMap;)V", "gatewayResume", "onClose", "", "code", "", "reason", "remote", "", "onError", "e", "Ljava/lang/Exception;", "Lkotlin/Exception;", "onMessage", "message", "onOpen", "handshakedata", "Lorg/java_websocket/handshake/ServerHandshake;", "onSetSSLParameters", "p", "Ljavax/net/ssl/SSLParameters;", "send", "text", "KizzyRPC_release"}, k = 1, mv = {1, 7, 1}, xi = 48)
public final class Websocket extends WebSocketClient {
private String gatewayResume;
final KizzyRPC this$0;
public Websocket(KizzyRPC kizzyRPC, URI uri, ArrayMap<String, String> arrayMap) {
super(uri, arrayMap);
Intrinsics.checkNotNullParameter(uri, "uri");
Intrinsics.checkNotNullParameter(arrayMap, "map");
this.this$0 = kizzyRPC;
this.gatewayResume = "";
}
public void send(String text) {
super.send(text);
Log.d("KizzyRPC", "Sending message: " + text);
}
public void onOpen(ServerHandshake handshakedata) {
Log.d("KizzyRPC", "WebSocket opened successfully with handshake data: " + handshakedata);
}
public void onMessage(String message) {
Intrinsics.checkNotNullParameter(message, "message");
Log.d("KizzyRPC", "Received message: " + message);
android.util.ArrayMap arrayMap = (android.util.ArrayMap) this.this$0.gson.fromJson(message, new TypeToken<android.util.ArrayMap<String, Object>>() {
}.getType());
Double d = (Double) arrayMap.get("op");
Intrinsics.checkNotNull(d);
int doubleValue = (int) d.doubleValue();
if (doubleValue == 0) {
if (Intrinsics.areEqual((String) arrayMap.get("t"), "READY")) {
KizzyRPC kizzyRPC = this.this$0;
Map map = (Map) arrayMap.get("d");
Intrinsics.checkNotNull(map);
kizzyRPC.sessionId = String.valueOf(map.get("session_id"));
Map map2 = (Map) arrayMap.get("d");
Intrinsics.checkNotNull(map2);
this.gatewayResume = String.valueOf(map2.get("resume_gateway_url"));
Log.d("KizzyRPC", "Gateway URL updated to: " + this.gatewayResume);
Log.i("KizzyRPC", "Sending Activity...");
RichPresence richPresence = this.this$0.rpc;
if (richPresence != null) {
this.this$0.send(this, richPresence);
return;
}
return;
}
return;
}
if (doubleValue == 1) {
if (!Thread.interrupted()) {
Log.d("KizzyRPC", "Interrupting Heartbeat thread");
Thread thread = this.this$0.heartbeatThr;
Intrinsics.checkNotNull(thread);
thread.interrupt();
}
this.this$0.send(this, new HeartBeat(1, this.this$0.seq == 0 ? "null" : String.valueOf(this.this$0.seq)));
return;
}
if (doubleValue != 7) {
switch (doubleValue) {
case 9:
Thread thread2 = this.this$0.heartbeatThr;
Intrinsics.checkNotNull(thread2);
if (!thread2.isInterrupted()) {
Log.d("KizzyRPC", "Reconnect Failed");
Thread thread3 = this.this$0.heartbeatThr;
Intrinsics.checkNotNull(thread3);
thread3.interrupt();
this.this$0.heartbeatThr = new Thread(this.this$0.heartbeatRunnable);
Thread thread4 = this.this$0.heartbeatThr;
Intrinsics.checkNotNull(thread4);
thread4.start();
this.this$0.sendIdentify();
break;
}
break;
case 10:
if (!this.this$0.reconnectSession) {
Map map3 = (Map) arrayMap.get("d");
KizzyRPC kizzyRPC2 = this.this$0;
Intrinsics.checkNotNull(map3);
Double d2 = (Double) map3.get("heartbeat_interval");
Intrinsics.checkNotNull(d2);
kizzyRPC2.heartbeatInterval = (int) d2.doubleValue();
Log.d("KizzyRPC", "Starting Heartbeat thread with interval: " + this.this$0.heartbeatInterval);
this.this$0.heartbeatThr = new Thread(this.this$0.heartbeatRunnable);
Thread thread5 = this.this$0.heartbeatThr;
Intrinsics.checkNotNull(thread5);
thread5.start();
this.this$0.sendIdentify();
break;
} else {
Log.d("KizzyRPC", "Sending Resume");
Map map4 = (Map) arrayMap.get("d");
KizzyRPC kizzyRPC3 = this.this$0;
Intrinsics.checkNotNull(map4);
Double d3 = (Double) map4.get("heartbeat_interval");
Intrinsics.checkNotNull(d3);
kizzyRPC3.heartbeatInterval = (int) d3.doubleValue();
Log.d("KizzyRPC", "Starting Heartbeat thread with interval: " + this.this$0.heartbeatInterval);
this.this$0.heartbeatThr = new Thread(this.this$0.heartbeatRunnable);
Thread thread6 = this.this$0.heartbeatThr;
Intrinsics.checkNotNull(thread6);
thread6.start();
this.this$0.reconnectSession = false;
KizzyRPC kizzyRPC4 = this.this$0;
kizzyRPC4.send(this, new Resume(new D(this.this$0.seq, this.this$0.sessionId, kizzyRPC4.getToken()), 6));
break;
}
case 11:
if (!Thread.interrupted()) {
Thread thread7 = this.this$0.heartbeatThr;
Intrinsics.checkNotNull(thread7);
thread7.interrupt();
}
this.this$0.heartbeatThr = new Thread(this.this$0.heartbeatRunnable);
Thread thread8 = this.this$0.heartbeatThr;
Intrinsics.checkNotNull(thread8);
thread8.start();
break;
}
return;
}
this.this$0.reconnectSession = true;
Log.e("KizzyRPC", "Closing Session and Reconnecting");
WebSocketClient webSocketClient = this.this$0.webSocketClient;
Intrinsics.checkNotNull(webSocketClient);
webSocketClient.close(4000);
}
public void onClose(int code, String reason, boolean remote) {
Intrinsics.checkNotNullParameter(reason, "reason");
Log.d("KizzyRPC", "Closed with: code = " + code + ", reason = " + reason + ", remote = " + remote);
if (code == 4000) {
this.this$0.reconnectSession = true;
Thread thread = this.this$0.heartbeatThr;
Intrinsics.checkNotNull(thread);
thread.interrupt();
Log.e("KizzyRPC", "Socket Closed");
final KizzyRPC kizzyRPC = this.this$0;
new Thread(new Runnable() {
@Override
public final void run() {
KizzyRPC.Websocket.onClose$lambda$1(KizzyRPC.this, this);
}
}).start();
return;
}
throw new RuntimeException("Invalid");
}
public static final void onClose$lambda$1(KizzyRPC kizzyRPC, Websocket websocket) {
Intrinsics.checkNotNullParameter(kizzyRPC, "this$0");
Intrinsics.checkNotNullParameter(websocket, "this$1");
try {
Thread.sleep(200L);
kizzyRPC.webSocketClient = new Websocket(kizzyRPC, new URI(websocket.gatewayResume), new ArrayMap());
WebSocketClient webSocketClient = kizzyRPC.webSocketClient;
Intrinsics.checkNotNull(webSocketClient, "null cannot be cast to non-null type com.my.kizzyrpc.KizzyRPC.Websocket");
((Websocket) webSocketClient).connect();
} catch (InterruptedException unused) {
}
}
public void onError(Exception e) {
Intrinsics.checkNotNullParameter(e, "e");
Log.e("KizzyRPC", "onError() called with: e = " + e);
if (Intrinsics.areEqual(e.getMessage(), "Interrupt")) {
return;
}
this.this$0.closeRPC();
}
protected void onSetSSLParameters(SSLParameters p) {
Intrinsics.checkNotNullParameter(p, "p");
try {
super.onSetSSLParameters(p);
} catch (Throwable th) {
th.printStackTrace();
}
}
}
public final void send(WebSocketClient webSocketClient, Object obj) {
if (webSocketClient == null || !webSocketClient.isOpen()) {
return;
}
webSocketClient.send(this.gson.toJson(obj));
}
}