Skip to content

Commit 3308b02

Browse files
feat: add more request functions to JanusAdminClient
1 parent b8816dc commit 3308b02

File tree

13 files changed

+403
-5
lines changed

13 files changed

+403
-5
lines changed

src/main/java/io/github/kinsleykajiva/janus/admin/JanusAdminClient.java

Lines changed: 113 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,30 @@
11
package io.github.kinsleykajiva.janus.admin;
22

33
import io.github.kinsleykajiva.janus.ServerInfo;
4+
import io.github.kinsleykajiva.janus.admin.messages.AcceptNewSessions;
5+
import io.github.kinsleykajiva.janus.admin.messages.CustomEvent;
6+
import io.github.kinsleykajiva.janus.admin.messages.DestroySession;
7+
import io.github.kinsleykajiva.janus.admin.messages.DetachHandle;
8+
import io.github.kinsleykajiva.janus.admin.messages.GetStatus;
49
import io.github.kinsleykajiva.janus.admin.messages.HandleInfo;
510
import io.github.kinsleykajiva.janus.admin.messages.HandleInfoResponse;
11+
import io.github.kinsleykajiva.janus.admin.messages.HangupWebRTC;
612
import io.github.kinsleykajiva.janus.admin.messages.Info;
7-
import io.github.kinsleykajiva.janus.admin.messages.DestroySession;
813
import io.github.kinsleykajiva.janus.admin.messages.ListHandles;
914
import io.github.kinsleykajiva.janus.admin.messages.ListHandlesResponse;
10-
import io.github.kinsleykajiva.janus.admin.messages.GetStatus;
11-
import io.github.kinsleykajiva.janus.admin.messages.MessagePlugin;
12-
import io.github.kinsleykajiva.janus.admin.messages.SetLogLevel;
1315
import io.github.kinsleykajiva.janus.admin.messages.ListSessions;
14-
import io.github.kinsleykajiva.janus.admin.messages.Ping;
1516
import io.github.kinsleykajiva.janus.admin.messages.ListSessionsResponse;
17+
import io.github.kinsleykajiva.janus.admin.messages.MessagePlugin;
18+
import io.github.kinsleykajiva.janus.admin.messages.Ping;
19+
import io.github.kinsleykajiva.janus.admin.messages.QueryEventHandler;
20+
import io.github.kinsleykajiva.janus.admin.messages.ResolveAddress;
21+
import io.github.kinsleykajiva.janus.admin.messages.SetLogLevel;
22+
import io.github.kinsleykajiva.janus.admin.messages.SetSessionTimeout;
23+
import io.github.kinsleykajiva.janus.admin.messages.StartPcap;
24+
import io.github.kinsleykajiva.janus.admin.messages.StartText2Pcap;
25+
import io.github.kinsleykajiva.janus.admin.messages.StopPcap;
26+
import io.github.kinsleykajiva.janus.admin.messages.StopText2Pcap;
27+
import io.github.kinsleykajiva.janus.admin.messages.TestStun;
1628
import io.github.kinsleykajiva.janus.exception.JanusException;
1729
import io.github.kinsleykajiva.janus.internal.TransactionManager;
1830
import org.json.JSONException;
@@ -313,4 +325,100 @@ public CompletableFuture<JSONObject> setLogLevel(int level) {
313325
sendMessage(request.toJson());
314326
return future;
315327
}
328+
329+
public CompletableFuture<JSONObject> resolveAddress(String address) {
330+
String transactionId = transactionManager.createTransaction();
331+
var future = transactionManager.registerTransaction(transactionId);
332+
ResolveAddress request = new ResolveAddress(transactionId, address);
333+
sendMessage(request.toJson());
334+
return future;
335+
}
336+
337+
public CompletableFuture<JSONObject> testStun() {
338+
String transactionId = transactionManager.createTransaction();
339+
var future = transactionManager.registerTransaction(transactionId);
340+
TestStun request = new TestStun(transactionId);
341+
sendMessage(request.toJson());
342+
return future;
343+
}
344+
345+
public CompletableFuture<JSONObject> queryEventHandler(String handler, JSONObject query) {
346+
String transactionId = transactionManager.createTransaction();
347+
var future = transactionManager.registerTransaction(transactionId);
348+
QueryEventHandler request = new QueryEventHandler(transactionId, handler, query);
349+
sendMessage(request.toJson());
350+
return future;
351+
}
352+
353+
public CompletableFuture<JSONObject> customEvent(JSONObject event) {
354+
String transactionId = transactionManager.createTransaction();
355+
var future = transactionManager.registerTransaction(transactionId);
356+
CustomEvent request = new CustomEvent(transactionId, event);
357+
sendMessage(request.toJson());
358+
return future;
359+
}
360+
361+
public CompletableFuture<JSONObject> startPcap(long sessionId, long handleId, String folder, String filename) {
362+
String transactionId = transactionManager.createTransaction();
363+
var future = transactionManager.registerTransaction(transactionId);
364+
StartPcap request = new StartPcap(transactionId, sessionId, handleId, folder, filename);
365+
sendMessage(request.toJson());
366+
return future;
367+
}
368+
369+
public CompletableFuture<JSONObject> stopPcap(long sessionId, long handleId) {
370+
String transactionId = transactionManager.createTransaction();
371+
var future = transactionManager.registerTransaction(transactionId);
372+
StopPcap request = new StopPcap(transactionId, sessionId, handleId);
373+
sendMessage(request.toJson());
374+
return future;
375+
}
376+
377+
public CompletableFuture<JSONObject> startText2Pcap(long sessionId, long handleId, String folder, String filename) {
378+
String transactionId = transactionManager.createTransaction();
379+
var future = transactionManager.registerTransaction(transactionId);
380+
StartText2Pcap request = new StartText2Pcap(transactionId, sessionId, handleId, folder, filename);
381+
sendMessage(request.toJson());
382+
return future;
383+
}
384+
385+
public CompletableFuture<JSONObject> stopText2Pcap(long sessionId, long handleId) {
386+
String transactionId = transactionManager.createTransaction();
387+
var future = transactionManager.registerTransaction(transactionId);
388+
StopText2Pcap request = new StopText2Pcap(transactionId, sessionId, handleId);
389+
sendMessage(request.toJson());
390+
return future;
391+
}
392+
393+
public CompletableFuture<JSONObject> hangupWebRTC(long sessionId, long handleId) {
394+
String transactionId = transactionManager.createTransaction();
395+
var future = transactionManager.registerTransaction(transactionId);
396+
HangupWebRTC request = new HangupWebRTC(transactionId, sessionId, handleId);
397+
sendMessage(request.toJson());
398+
return future;
399+
}
400+
401+
public CompletableFuture<JSONObject> detachHandle(long sessionId, long handleId) {
402+
String transactionId = transactionManager.createTransaction();
403+
var future = transactionManager.registerTransaction(transactionId);
404+
DetachHandle request = new DetachHandle(transactionId, sessionId, handleId);
405+
sendMessage(request.toJson());
406+
return future;
407+
}
408+
409+
public CompletableFuture<JSONObject> setSessionTimeout(int timeout) {
410+
String transactionId = transactionManager.createTransaction();
411+
var future = transactionManager.registerTransaction(transactionId);
412+
SetSessionTimeout request = new SetSessionTimeout(transactionId, timeout);
413+
sendMessage(request.toJson());
414+
return future;
415+
}
416+
417+
public CompletableFuture<JSONObject> acceptNewSessions(boolean accept) {
418+
String transactionId = transactionManager.createTransaction();
419+
var future = transactionManager.registerTransaction(transactionId);
420+
AcceptNewSessions request = new AcceptNewSessions(transactionId, accept);
421+
sendMessage(request.toJson());
422+
return future;
423+
}
316424
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package io.github.kinsleykajiva.janus.admin.messages;
2+
3+
import org.json.JSONObject;
4+
5+
public class AcceptNewSessions {
6+
private final String transaction;
7+
private final boolean accept;
8+
9+
public AcceptNewSessions(String transaction, boolean accept) {
10+
this.transaction = transaction;
11+
this.accept = accept;
12+
}
13+
14+
public JSONObject toJson() {
15+
JSONObject json = new JSONObject();
16+
json.put("janus", "accept_new_sessions");
17+
json.put("transaction", transaction);
18+
json.put("accept", accept);
19+
return json;
20+
}
21+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package io.github.kinsleykajiva.janus.admin.messages;
2+
3+
import org.json.JSONObject;
4+
5+
public class CustomEvent {
6+
private final String transaction;
7+
private final JSONObject event;
8+
9+
public CustomEvent(String transaction, JSONObject event) {
10+
this.transaction = transaction;
11+
this.event = event;
12+
}
13+
14+
public JSONObject toJson() {
15+
JSONObject json = new JSONObject();
16+
json.put("janus", "custom_event");
17+
json.put("transaction", transaction);
18+
json.put("event", event);
19+
return json;
20+
}
21+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package io.github.kinsleykajiva.janus.admin.messages;
2+
3+
import org.json.JSONObject;
4+
5+
public class DetachHandle {
6+
private final String transaction;
7+
private final long sessionId;
8+
private final long handleId;
9+
10+
public DetachHandle(String transaction, long sessionId, long handleId) {
11+
this.transaction = transaction;
12+
this.sessionId = sessionId;
13+
this.handleId = handleId;
14+
}
15+
16+
public JSONObject toJson() {
17+
JSONObject json = new JSONObject();
18+
json.put("janus", "detach_handle");
19+
json.put("transaction", transaction);
20+
json.put("session_id", sessionId);
21+
json.put("handle_id", handleId);
22+
return json;
23+
}
24+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package io.github.kinsleykajiva.janus.admin.messages;
2+
3+
import org.json.JSONObject;
4+
5+
public class HangupWebRTC {
6+
private final String transaction;
7+
private final long sessionId;
8+
private final long handleId;
9+
10+
public HangupWebRTC(String transaction, long sessionId, long handleId) {
11+
this.transaction = transaction;
12+
this.sessionId = sessionId;
13+
this.handleId = handleId;
14+
}
15+
16+
public JSONObject toJson() {
17+
JSONObject json = new JSONObject();
18+
json.put("janus", "hangup_webrtc");
19+
json.put("transaction", transaction);
20+
json.put("session_id", sessionId);
21+
json.put("handle_id", handleId);
22+
return json;
23+
}
24+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package io.github.kinsleykajiva.janus.admin.messages;
2+
3+
import org.json.JSONObject;
4+
5+
public class QueryEventHandler {
6+
private final String transaction;
7+
private final String handler;
8+
private final JSONObject request;
9+
10+
public QueryEventHandler(String transaction, String handler, JSONObject request) {
11+
this.transaction = transaction;
12+
this.handler = handler;
13+
this.request = request;
14+
}
15+
16+
public JSONObject toJson() {
17+
JSONObject json = new JSONObject();
18+
json.put("janus", "query_eventhandler");
19+
json.put("transaction", transaction);
20+
json.put("handler", handler);
21+
json.put("request", request);
22+
return json;
23+
}
24+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package io.github.kinsleykajiva.janus.admin.messages;
2+
3+
import org.json.JSONObject;
4+
5+
public class ResolveAddress {
6+
private final String transaction;
7+
private final String address;
8+
9+
public ResolveAddress(String transaction, String address) {
10+
this.transaction = transaction;
11+
this.address = address;
12+
}
13+
14+
public JSONObject toJson() {
15+
JSONObject json = new JSONObject();
16+
json.put("janus", "resolve_address");
17+
json.put("transaction", transaction);
18+
json.put("address", address);
19+
return json;
20+
}
21+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package io.github.kinsleykajiva.janus.admin.messages;
2+
3+
import org.json.JSONObject;
4+
5+
public class SetSessionTimeout {
6+
private final String transaction;
7+
private final int timeout;
8+
9+
public SetSessionTimeout(String transaction, int timeout) {
10+
this.transaction = transaction;
11+
this.timeout = timeout;
12+
}
13+
14+
public JSONObject toJson() {
15+
JSONObject json = new JSONObject();
16+
json.put("janus", "set_session_timeout");
17+
json.put("transaction", transaction);
18+
json.put("timeout", timeout);
19+
return json;
20+
}
21+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package io.github.kinsleykajiva.janus.admin.messages;
2+
3+
import org.json.JSONObject;
4+
5+
public class StartPcap {
6+
private final String transaction;
7+
private final long sessionId;
8+
private final long handleId;
9+
private final String folder;
10+
private final String filename;
11+
12+
public StartPcap(String transaction, long sessionId, long handleId, String folder, String filename) {
13+
this.transaction = transaction;
14+
this.sessionId = sessionId;
15+
this.handleId = handleId;
16+
this.folder = folder;
17+
this.filename = filename;
18+
}
19+
20+
public JSONObject toJson() {
21+
JSONObject json = new JSONObject();
22+
json.put("janus", "start_pcap");
23+
json.put("transaction", transaction);
24+
json.put("session_id", sessionId);
25+
json.put("handle_id", handleId);
26+
if (folder != null && !folder.isEmpty()) {
27+
json.put("folder", folder);
28+
}
29+
if (filename != null && !filename.isEmpty()) {
30+
json.put("filename", filename);
31+
}
32+
return json;
33+
}
34+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package io.github.kinsleykajiva.janus.admin.messages;
2+
3+
import org.json.JSONObject;
4+
5+
public class StartText2Pcap {
6+
private final String transaction;
7+
private final long sessionId;
8+
private final long handleId;
9+
private final String folder;
10+
private final String filename;
11+
12+
public StartText2Pcap(String transaction, long sessionId, long handleId, String folder, String filename) {
13+
this.transaction = transaction;
14+
this.sessionId = sessionId;
15+
this.handleId = handleId;
16+
this.folder = folder;
17+
this.filename = filename;
18+
}
19+
20+
public JSONObject toJson() {
21+
JSONObject json = new JSONObject();
22+
json.put("janus", "start_text2pcap");
23+
json.put("transaction", transaction);
24+
json.put("session_id", sessionId);
25+
json.put("handle_id", handleId);
26+
if (folder != null && !folder.isEmpty()) {
27+
json.put("folder", folder);
28+
}
29+
if (filename != null && !filename.isEmpty()) {
30+
json.put("filename", filename);
31+
}
32+
return json;
33+
}
34+
}

0 commit comments

Comments
 (0)