1212import org .json .JSONObject ;
1313
1414import com .gravitylab .obscontrollerapi .utils .AuthTokenGenerationException ;
15+ import com .gravitylab .obscontrollerapi .utils .Operation ;
1516
1617import lombok .extern .slf4j .Slf4j ;
1718
1819@ Slf4j
1920public 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