Skip to content

Commit b5c1953

Browse files
committed
feat: Added Requests
1 parent b260c0f commit b5c1953

File tree

7 files changed

+196
-3
lines changed

7 files changed

+196
-3
lines changed

src/main/java/net/twasi/obsremotejava/OBSCommunicator.java

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,12 @@
9898
import net.twasi.obsremotejava.requests.StopReplayBuffer.StopReplayBufferResponse;
9999
import net.twasi.obsremotejava.requests.StopStreaming.StopStreamingRequest;
100100
import net.twasi.obsremotejava.requests.StopStreaming.StopStreamingResponse;
101+
import net.twasi.obsremotejava.requests.TakeSourceScreenshot.TakeSourceScreenshotRequest;
102+
import net.twasi.obsremotejava.requests.TakeSourceScreenshot.TakeSourceScreenshotResponse;
101103
import net.twasi.obsremotejava.requests.TransitionToProgram.TransitionToProgramRequest;
102104
import net.twasi.obsremotejava.requests.TransitionToProgram.TransitionToProgramResponse;
105+
import net.twasi.obsremotejava.requests.TriggerHotkeyByName.TriggerHotkeyByNameRequest;
106+
import net.twasi.obsremotejava.requests.TriggerHotkeyByName.TriggerHotkeyByNameResponse;
103107
import org.eclipse.jetty.websocket.api.Session;
104108
import org.eclipse.jetty.websocket.api.annotations.*;
105109
import org.slf4j.Logger;
@@ -638,7 +642,7 @@ public void getSourceFilterInfo(String sourceName, String filterName, Callback<G
638642

639643
public void setSourceFilterVisibility(String sourceName, String filterName, boolean filterEnabled, Callback<SetSourceFilterVisibilityResponse> callback) {
640644
SetSourceFilterVisibilityRequest request = new SetSourceFilterVisibilityRequest(this, sourceName, filterName, filterEnabled);
641-
session.getRemote().sendStringByFuture(new Gson().toJson(request));
645+
session.getRemote().sendStringByFuture(this.gson.toJson(request));
642646
callbacks.put(SetSourceFilterVisibilityResponse.class, callback);
643647
}
644648

@@ -649,6 +653,46 @@ public void setSourceFilterSettings(String sourceName, String filterName, Map<St
649653
callbacks.put(SetSourceFilterSettingsResponse.class, callback);
650654
}
651655

656+
public void takeSourceScreenshot(String sourceName, String embedPictureFormat, String saveToFilePath, String fileFormat, Integer compressionQuality, Integer width, Integer height, Callback<TakeSourceScreenshotResponse> callback) {
657+
TakeSourceScreenshotRequest request = new TakeSourceScreenshotRequest.Builder(sourceName)
658+
.toEmbed(embedPictureFormat)
659+
.toFile(saveToFilePath, fileFormat)
660+
.compressionQuality(compressionQuality)
661+
.width(width)
662+
.height(height)
663+
.build(this);
664+
session.getRemote().sendStringByFuture(this.gson.toJson(request));
665+
callbacks.put(TakeSourceScreenshotResponse.class, callback);
666+
}
667+
668+
public void takeSourceScreenshot(Callback<TakeSourceScreenshotResponse> callback) {
669+
TakeSourceScreenshotRequest request = new TakeSourceScreenshotRequest.Builder().build(this);
670+
session.getRemote().sendStringByFuture(this.gson.toJson(request));
671+
callbacks.put(TakeSourceScreenshotResponse.class, callback);
672+
}
673+
674+
public void takeSourceScreenshotToEmbed(String sourceName, String embedPictureFormat, Integer compressionQuality, Integer width, Integer height, Callback<TakeSourceScreenshotResponse> callback) {
675+
TakeSourceScreenshotRequest request = new TakeSourceScreenshotRequest.Builder(sourceName)
676+
.toEmbed(embedPictureFormat)
677+
.compressionQuality(compressionQuality)
678+
.width(width)
679+
.height(height)
680+
.build(this);
681+
session.getRemote().sendStringByFuture(this.gson.toJson(request));
682+
callbacks.put(TakeSourceScreenshotResponse.class, callback);
683+
}
684+
685+
public void takeSourceScreenshotToFile(String sourceName, String saveToFilePath, String fileFormat, Integer compressionQuality, Integer width, Integer height, Callback<TakeSourceScreenshotResponse> callback) {
686+
TakeSourceScreenshotRequest request = new TakeSourceScreenshotRequest.Builder(sourceName)
687+
.toFile(saveToFilePath, fileFormat)
688+
.compressionQuality(compressionQuality)
689+
.width(width)
690+
.height(height)
691+
.build(this);
692+
session.getRemote().sendStringByFuture(this.gson.toJson(request));
693+
callbacks.put(TakeSourceScreenshotResponse.class, callback);
694+
}
695+
652696
public void startRecording(Callback<StartRecordingResponse> callback) {
653697
StartRecordingRequest request = new StartRecordingRequest(this);
654698

@@ -858,6 +902,13 @@ public void getSpecialSources(Callback<GetSpecialSourcesResponse> callback) {
858902
callbacks.put(GetSpecialSourcesResponse.class, callback);
859903
}
860904

905+
public void triggerHotkeyByName(String hotkeyName, Callback<TriggerHotkeyByNameResponse> callback) {
906+
TriggerHotkeyByNameRequest request = new TriggerHotkeyByNameRequest(this, hotkeyName);
907+
908+
session.getRemote().sendStringByFuture(this.gson.toJson(request));
909+
callbacks.put(TriggerHotkeyByNameResponse.class, callback);
910+
}
911+
861912
private void runOnError(String message, Throwable throwable) {
862913
log.debug("Running onError with message: " + message + " and exception:", throwable);
863914
if (onError == null) {

src/main/java/net/twasi/obsremotejava/OBSRemoteController.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import net.twasi.obsremotejava.requests.SetMute.SetMuteResponse;
3535
import net.twasi.obsremotejava.requests.SetPreviewScene.SetPreviewSceneResponse;
3636
import net.twasi.obsremotejava.requests.SetSceneItemProperties.SetSceneItemPropertiesResponse;
37+
import net.twasi.obsremotejava.requests.SetSourceFilterSettings.SetSourceFilterSettingsResponse;
3738
import net.twasi.obsremotejava.requests.SetSourceFilterVisibility.SetSourceFilterVisibilityResponse;
3839
import net.twasi.obsremotejava.requests.SetSourceSettings.SetSourceSettingsResponse;
3940
import net.twasi.obsremotejava.requests.SetStudioModeEnabled.SetStudioModeEnabledResponse;
@@ -46,7 +47,9 @@
4647
import net.twasi.obsremotejava.requests.StopRecording.StopRecordingResponse;
4748
import net.twasi.obsremotejava.requests.StopReplayBuffer.StopReplayBufferResponse;
4849
import net.twasi.obsremotejava.requests.StopStreaming.StopStreamingResponse;
50+
import net.twasi.obsremotejava.requests.TakeSourceScreenshot.TakeSourceScreenshotResponse;
4951
import net.twasi.obsremotejava.requests.TransitionToProgram.TransitionToProgramResponse;
52+
import net.twasi.obsremotejava.requests.TriggerHotkeyByName.TriggerHotkeyByNameResponse;
5053
import org.eclipse.jetty.websocket.api.Session;
5154
import org.eclipse.jetty.websocket.client.ClientUpgradeRequest;
5255
import org.eclipse.jetty.websocket.client.WebSocketClient;
@@ -346,10 +349,26 @@ public void setSourceSettings(String sourceName, Map<String, Object> settings, C
346349
communicator.setSourceSettings(sourceName, settings, callback);
347350
}
348351

349-
public void setSourceFilterSettings(String sourceName, String filterName, Map<String, Object> settings, Callback callback) {
352+
public void setSourceFilterSettings(String sourceName, String filterName, Map<String, Object> settings, Callback<SetSourceFilterSettingsResponse> callback) {
350353
communicator.setSourceFilterSettings(sourceName, filterName, settings, callback);
351354
}
352355

356+
public void takeSourceScreenshot(String sourceName, String embedPictureFormat, String saveToFilePath, String fileFormat, Integer compressionQuality, Integer width, Integer height, Callback<TakeSourceScreenshotResponse> callback) {
357+
communicator.takeSourceScreenshot(sourceName, embedPictureFormat, saveToFilePath, fileFormat, compressionQuality, width, height, callback);
358+
}
359+
360+
public void takeSourceScreenshot(Callback<TakeSourceScreenshotResponse> callback) {
361+
communicator.takeSourceScreenshot(callback);
362+
}
363+
364+
public void takeSourceScreenshotToEmbed(String sourceName, String embedPictureFormat, Integer compressionQuality, Integer width, Integer height, Callback<TakeSourceScreenshotResponse> callback) {
365+
communicator.takeSourceScreenshotToEmbed(sourceName, embedPictureFormat, compressionQuality, width, height, callback);
366+
}
367+
368+
public void takeSourceScreenshotToFile(String sourceName, String saveToFilePath, String fileFormat, Integer compressionQuality, Integer width, Integer height, Callback<TakeSourceScreenshotResponse> callback) {
369+
communicator.takeSourceScreenshotToFile(sourceName, saveToFilePath, fileFormat, compressionQuality, width, height, callback);
370+
}
371+
353372
public void getStreamingStatus(Callback<GetStreamingStatusResponse> callback) {
354373
communicator.getStreamingStatus(callback);
355374
}
@@ -483,6 +502,10 @@ public void getSpecialSources(Callback<GetSpecialSourcesResponse> callback) {
483502
communicator.getSpecialSources(callback);
484503
}
485504

505+
public void triggerHotkeyByName(String hotkeyName, Callback<TriggerHotkeyByNameResponse> callback) {
506+
communicator.triggerHotkeyByName(hotkeyName, callback);
507+
}
508+
486509
private void runOnError(String message, Throwable throwable) {
487510
log.debug("Running onError with message: " + message + " and exception:", throwable);
488511
if (onError == null) {

src/main/java/net/twasi/obsremotejava/requests/RequestType.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@ public enum RequestType {
2626

2727
GetSourceSettings,
2828
SetSourceSettings,
29-
3029
GetSourceFilters,
3130
GetSourceFilterInfo,
3231
SetSourceFilterSettings,
3332
SetSourceFilterVisibility,
33+
TakeSourceScreenshot,
3434

3535
GetStreamingStatus,
3636
StartRecording,
@@ -65,4 +65,6 @@ public enum RequestType {
6565
SetAudioMonitorType,
6666

6767
GetSpecialSources,
68+
69+
TriggerHotkeyByName,
6870
}
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
package net.twasi.obsremotejava.requests.TakeSourceScreenshot;
2+
3+
import net.twasi.obsremotejava.OBSCommunicator;
4+
import net.twasi.obsremotejava.requests.BaseRequest;
5+
import net.twasi.obsremotejava.requests.RequestType;
6+
7+
public class TakeSourceScreenshotRequest extends BaseRequest {
8+
private String sourceName;
9+
private String embedPictureFormat;
10+
private String saveToFilePath;
11+
private String fileFormat;
12+
private Integer compressionQuality;
13+
private Integer width;
14+
private Integer height;
15+
16+
private TakeSourceScreenshotRequest(OBSCommunicator com, String sourceName, String embedPictureFormat, String saveToFilePath, String fileFormat, Integer compressionQuality, Integer width, Integer height) {
17+
super(RequestType.TakeSourceScreenshot);
18+
19+
this.sourceName = sourceName;
20+
this.embedPictureFormat = embedPictureFormat;
21+
this.saveToFilePath = saveToFilePath;
22+
this.fileFormat = fileFormat;
23+
this.compressionQuality = compressionQuality;
24+
this.width = width;
25+
this.height = height;
26+
27+
com.messageTypes.put(getMessageId(), TakeSourceScreenshotResponse.class);
28+
}
29+
30+
public static class Builder {
31+
private String sourceName;
32+
private String embedPictureFormat;
33+
private String saveToFilePath;
34+
private String fileFormat;
35+
private Integer compressionQuality;
36+
private Integer width;
37+
private Integer height;
38+
39+
public Builder() {}
40+
41+
public Builder(String sourceName) {
42+
this.sourceName = sourceName;
43+
}
44+
45+
public Builder toEmbed(String embedPictureFormat) {
46+
this.embedPictureFormat = embedPictureFormat;
47+
48+
return this;
49+
}
50+
51+
public Builder toFile(String saveToFilePath) {
52+
this.saveToFilePath = saveToFilePath;
53+
54+
return this;
55+
}
56+
57+
public Builder toFile(String saveToFilePath, String fileFormat) {
58+
this.saveToFilePath = saveToFilePath;
59+
this.fileFormat = fileFormat;
60+
61+
return this;
62+
}
63+
64+
public Builder compressionQuality(Integer compressionQuality) {
65+
this.compressionQuality = compressionQuality;
66+
67+
return this;
68+
}
69+
70+
public Builder width(Integer width) {
71+
this.width = width;
72+
73+
return this;
74+
}
75+
76+
public Builder height(Integer height) {
77+
this.height = height;
78+
79+
return this;
80+
}
81+
82+
public TakeSourceScreenshotRequest build(OBSCommunicator com) {
83+
return new TakeSourceScreenshotRequest(com, this.sourceName, this.embedPictureFormat, this.saveToFilePath, this.fileFormat, this.compressionQuality, this.width, this.height);
84+
}
85+
}
86+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package net.twasi.obsremotejava.requests.TakeSourceScreenshot;
2+
3+
import net.twasi.obsremotejava.requests.ResponseBase;
4+
5+
public class TakeSourceScreenshotResponse extends ResponseBase {
6+
private String sourceName;
7+
private String img;
8+
private String imageFile;
9+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package net.twasi.obsremotejava.requests.TriggerHotkeyByName;
2+
3+
import net.twasi.obsremotejava.OBSCommunicator;
4+
import net.twasi.obsremotejava.requests.BaseRequest;
5+
import net.twasi.obsremotejava.requests.RequestType;
6+
7+
public class TriggerHotkeyByNameRequest extends BaseRequest {
8+
private String hotkeyName;
9+
10+
public TriggerHotkeyByNameRequest(OBSCommunicator com, String hotkeyName) {
11+
super(RequestType.TriggerHotkeyByName);
12+
13+
this.hotkeyName = hotkeyName;
14+
15+
com.messageTypes.put(getMessageId(), TriggerHotkeyByNameResponse.class);
16+
}
17+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package net.twasi.obsremotejava.requests.TriggerHotkeyByName;
2+
3+
import net.twasi.obsremotejava.requests.ResponseBase;
4+
5+
public class TriggerHotkeyByNameResponse extends ResponseBase {}

0 commit comments

Comments
 (0)