Skip to content

Commit 563c6e1

Browse files
Add Operation enum
1 parent e183aa8 commit 563c6e1

2 files changed

Lines changed: 29 additions & 11 deletions

File tree

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.gravitylab.obscontrollerapi.utils;
2+
3+
import lombok.Getter;
4+
5+
@Getter
6+
public enum Operation {
7+
HELLO(0), IDENTIFY(1), IDENTIFIED(2), REIDENTIFY(3), EVENT(5), REQUEST(6), REQUEST_RESPONSE(7), REQUEST_BATCH(
8+
8), REQUEST_BATCH_RESPONSE(9);
9+
10+
private final int opCode;
11+
12+
Operation(int opCode) {
13+
this.opCode = opCode;
14+
}
15+
16+
}

src/main/java/com/gravitylab/obscontrollerapi/websocket/OBSWebSocketClient.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,14 @@
1212
import org.json.JSONObject;
1313

1414
import com.gravitylab.obscontrollerapi.utils.AuthTokenGenerationException;
15+
import com.gravitylab.obscontrollerapi.utils.Operation;
1516

1617
import lombok.extern.slf4j.Slf4j;
1718

1819
@Slf4j
1920
public class OBSWebSocketClient extends WebSocketClient {
21+
private final static int JSON_INDENT_FACTOR = 4;
22+
private final static String SECRET_ALGORITHM = "SHA-256";
2023

2124
private final String obsPassword;
2225

@@ -40,15 +43,15 @@ public void onOpen(ServerHandshake serverHandshake) {
4043
public void onMessage(String s) {
4144
JSONObject receivedJson = new JSONObject(s);
4245
if (!receivedJson.has("op") || !receivedJson.has("d")) {
43-
log.info("Received message from OBS Websocket {}", receivedJson.toString(4));
46+
log.info("Received message from OBS Websocket {}", receivedJson.toString(JSON_INDENT_FACTOR));
4447
return;
4548
}
46-
log.info("Message from OBS Websocket {}", receivedJson.toString(4));
49+
log.info("Message from OBS Websocket {}", receivedJson.toString(JSON_INDENT_FACTOR));
4750

4851
int operation = receivedJson.getInt("op");
4952
rpcVersion = setRpcVersion(receivedJson);
5053

51-
if (operation == 0) {
54+
if (operation == Operation.HELLO.getOpCode()) {
5255
handleAuthentication(receivedJson);
5356
log.info("Authentication successful!");
5457
}
@@ -86,7 +89,7 @@ private void handleAuthentication(JSONObject receivedJson) {
8689

8790
private void sendStartRecordRequest() {
8891
JSONObject request = new JSONObject();
89-
request.put("op", 6);
92+
request.put("op", Operation.REQUEST.getOpCode());
9093
JSONObject data = new JSONObject();
9194
data.put("requestType", "StartRecord");
9295
data.put("requestId", requestID++);
@@ -95,29 +98,29 @@ private void sendStartRecordRequest() {
9598
data.put("requestData", requestData);
9699
request.put("d", data);
97100
this.send(request.toString());
98-
log.info("Sent request to OBS Websocket {}", request.toString(4));
101+
log.info("Sent request to OBS Websocket {}", request.toString(JSON_INDENT_FACTOR));
99102
}
100103

101104
private void sendStopRecordRequest() {
102105
JSONObject stopRecordRequest = new JSONObject();
103-
stopRecordRequest.put("op", 6); // Assuming '6' is the operation code for StopRecord
106+
stopRecordRequest.put("op", Operation.REQUEST.getOpCode()); // Assuming '6' is the operation code for StopRecord
104107
JSONObject data = new JSONObject();
105108
data.put("requestType", "StopRecord");
106109
data.put("requestId", requestID++);
107110
stopRecordRequest.put("d", data);
108111
this.send(stopRecordRequest.toString());
109-
log.info("Sent StopRecord request to OBS Websocket {}", stopRecordRequest.toString(4));
112+
log.info("Sent StopRecord request to OBS Websocket {}", stopRecordRequest.toString(JSON_INDENT_FACTOR));
110113
}
111114

112115
private void sendIdentifyMessage(String authToken) {
113116
JSONObject identifyMessage = new JSONObject();
114-
identifyMessage.put("op", 1);
117+
identifyMessage.put("op", Operation.IDENTIFY.getOpCode());
115118
JSONObject data = new JSONObject();
116119
data.put("rpcVersion", rpcVersion);
117120
data.put("authentication", authToken);
118121
identifyMessage.put("d", data);
119122
this.send(identifyMessage.toString());
120-
log.info("Sent identify message to OBS Websocket {}", identifyMessage.toString(4));
123+
log.info("Sent identify message to OBS Websocket {}", identifyMessage.toString(JSON_INDENT_FACTOR));
121124
}
122125

123126
private String generateAuthToken(String salt, String challenge) {
@@ -140,7 +143,7 @@ private String generateSecret(String salt, String challenge) throws NoSuchAlgori
140143
}
141144

142145
private static byte[] sha256Hash(String input) throws NoSuchAlgorithmException {
143-
MessageDigest digest = MessageDigest.getInstance("SHA-256");
146+
MessageDigest digest = MessageDigest.getInstance(SECRET_ALGORITHM);
144147
return digest.digest(input.getBytes());
145148
}
146149

@@ -149,7 +152,6 @@ private static String base64Encode(byte[] bytes) {
149152
}
150153

151154
private int setRpcVersion(JSONObject receivedJson) {
152-
int rpcVersion = 1;
153155
JSONObject data = receivedJson.getJSONObject("d");
154156
if (data.has("rpcVersion")) {
155157
rpcVersion = data.getInt("rpcVersion");

0 commit comments

Comments
 (0)