]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/json/JsonCallMessage.java
Update libsignal-service-java
[signal-cli] / src / main / java / org / asamk / signal / json / JsonCallMessage.java
index 885c38a40fc04a04b3aaf44546837035715ab076..1b1bc2ba7a6165d762e53564436f000445f33728 100644 (file)
@@ -1,44 +1,60 @@
 package org.asamk.signal.json;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.annotation.JsonProperty;
 
-import org.whispersystems.signalservice.api.messages.calls.AnswerMessage;
-import org.whispersystems.signalservice.api.messages.calls.BusyMessage;
-import org.whispersystems.signalservice.api.messages.calls.HangupMessage;
-import org.whispersystems.signalservice.api.messages.calls.IceUpdateMessage;
-import org.whispersystems.signalservice.api.messages.calls.OfferMessage;
-import org.whispersystems.signalservice.api.messages.calls.SignalServiceCallMessage;
+import org.asamk.signal.manager.api.MessageEnvelope;
 
+import java.util.Base64;
 import java.util.List;
 
-class JsonCallMessage {
+record JsonCallMessage(
+        @JsonInclude(JsonInclude.Include.NON_NULL) Offer offerMessage,
+        @JsonInclude(JsonInclude.Include.NON_NULL) Answer answerMessage,
+        @JsonInclude(JsonInclude.Include.NON_NULL) Busy busyMessage,
+        @JsonInclude(JsonInclude.Include.NON_NULL) Hangup hangupMessage,
+        @JsonInclude(JsonInclude.Include.NON_EMPTY) List<IceUpdate> iceUpdateMessages
+) {
+
+    static JsonCallMessage from(MessageEnvelope.Call callMessage) {
+        return new JsonCallMessage(callMessage.offer().map(Offer::from).orElse(null),
+                callMessage.answer().map(Answer::from).orElse(null),
+                callMessage.busy().map(Busy::from).orElse(null),
+                callMessage.hangup().map(Hangup::from).orElse(null),
+                callMessage.iceUpdate().stream().map(IceUpdate::from).toList());
+    }
+
+    record Offer(long id, String type, String opaque) {
 
-    @JsonProperty
-    @JsonInclude(JsonInclude.Include.NON_NULL)
-    final OfferMessage offerMessage;
+        public static Offer from(final MessageEnvelope.Call.Offer offer) {
+            return new Offer(offer.id(), offer.type().name(), Base64.getEncoder().encodeToString(offer.opaque()));
+        }
+    }
 
-    @JsonProperty
-    @JsonInclude(JsonInclude.Include.NON_NULL)
-    final AnswerMessage answerMessage;
+    public record Answer(long id, String opaque) {
+
+        public static Answer from(final MessageEnvelope.Call.Answer answer) {
+            return new Answer(answer.id(), Base64.getEncoder().encodeToString(answer.opaque()));
+        }
+    }
 
-    @JsonProperty
-    @JsonInclude(JsonInclude.Include.NON_NULL)
-    final BusyMessage busyMessage;
+    public record Busy(long id) {
 
-    @JsonProperty
-    @JsonInclude(JsonInclude.Include.NON_NULL)
-    final HangupMessage hangupMessage;
+        public static Busy from(final MessageEnvelope.Call.Busy busy) {
+            return new Busy(busy.id());
+        }
+    }
+
+    public record Hangup(long id, String type, int deviceId) {
+
+        public static Hangup from(final MessageEnvelope.Call.Hangup hangup) {
+            return new Hangup(hangup.id(), hangup.type().name(), hangup.deviceId());
+        }
+    }
 
-    @JsonProperty
-    @JsonInclude(JsonInclude.Include.NON_NULL)
-    final List<IceUpdateMessage> iceUpdateMessages;
+    public record IceUpdate(long id, String opaque) {
 
-    JsonCallMessage(SignalServiceCallMessage callMessage) {
-        this.offerMessage = callMessage.getOfferMessage().orNull();
-        this.answerMessage = callMessage.getAnswerMessage().orNull();
-        this.busyMessage = callMessage.getBusyMessage().orNull();
-        this.hangupMessage = callMessage.getHangupMessage().orNull();
-        this.iceUpdateMessages = callMessage.getIceUpdateMessages().orNull();
+        public static IceUpdate from(final MessageEnvelope.Call.IceUpdate iceUpdate) {
+            return new IceUpdate(iceUpdate.id(), Base64.getEncoder().encodeToString(iceUpdate.opaque()));
+        }
     }
 }