X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/ae41d0c5026fe868c6198e1005344fc78b6e0a2c..f1d735f93db6ec45b391f4fc6bcd20c486d7143c:/src/main/java/org/asamk/signal/json/JsonCallMessage.java diff --git a/src/main/java/org/asamk/signal/json/JsonCallMessage.java b/src/main/java/org/asamk/signal/json/JsonCallMessage.java index c1b1d443..3438cf39 100644 --- a/src/main/java/org/asamk/signal/json/JsonCallMessage.java +++ b/src/main/java/org/asamk/signal/json/JsonCallMessage.java @@ -1,37 +1,65 @@ package org.asamk.signal.json; -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 com.fasterxml.jackson.annotation.JsonInclude; +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 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()); + } - OfferMessage offerMessage; - AnswerMessage answerMessage; - BusyMessage busyMessage; - HangupMessage hangupMessage; - List iceUpdateMessages; + record Offer(long id, String sdp, String type, String opaque) { - JsonCallMessage(SignalServiceCallMessage callMessage) { - if (callMessage.getOfferMessage().isPresent()) { - this.offerMessage = callMessage.getOfferMessage().get(); + public static Offer from(final MessageEnvelope.Call.Offer offer) { + return new Offer(offer.id(), + offer.sdp(), + offer.type().name(), + Base64.getEncoder().encodeToString(offer.opaque())); } - if (callMessage.getAnswerMessage().isPresent()) { - this.answerMessage = callMessage.getAnswerMessage().get(); + } + + public record Answer(long id, String sdp, String opaque) { + + public static Answer from(final MessageEnvelope.Call.Answer answer) { + return new Answer(answer.id(), answer.sdp(), Base64.getEncoder().encodeToString(answer.opaque())); } - if (callMessage.getBusyMessage().isPresent()) { - this.busyMessage = callMessage.getBusyMessage().get(); + } + + public record Busy(long id) { + + public static Busy from(final MessageEnvelope.Call.Busy busy) { + return new Busy(busy.id()); } - if (callMessage.getHangupMessage().isPresent()) { - this.hangupMessage = callMessage.getHangupMessage().get(); + } + + 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()); } - if (callMessage.getIceUpdateMessages().isPresent()) { - this.iceUpdateMessages = callMessage.getIceUpdateMessages().get(); + } + + public record IceUpdate(long id, String sdp, String opaque) { + + public static IceUpdate from(final MessageEnvelope.Call.IceUpdate iceUpdate) { + return new IceUpdate(iceUpdate.id(), + iceUpdate.sdp(), + Base64.getEncoder().encodeToString(iceUpdate.opaque())); } } }