]>
nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/json/JsonCallMessage.java
1 package org
.asamk
.signal
.json
;
3 import com
.fasterxml
.jackson
.annotation
.JsonInclude
;
5 import org
.asamk
.signal
.manager
.api
.MessageEnvelope
;
7 import java
.util
.Base64
;
9 import java
.util
.stream
.Collectors
;
11 record JsonCallMessage(
12 @JsonInclude(JsonInclude
.Include
.NON_NULL
) Offer offerMessage
,
13 @JsonInclude(JsonInclude
.Include
.NON_NULL
) Answer answerMessage
,
14 @JsonInclude(JsonInclude
.Include
.NON_NULL
) Busy busyMessage
,
15 @JsonInclude(JsonInclude
.Include
.NON_NULL
) Hangup hangupMessage
,
16 @JsonInclude(JsonInclude
.Include
.NON_EMPTY
) List
<IceUpdate
> iceUpdateMessages
19 static JsonCallMessage
from(MessageEnvelope
.Call callMessage
) {
20 return new JsonCallMessage(callMessage
.offer().map(Offer
::from
).orElse(null),
21 callMessage
.answer().map(Answer
::from
).orElse(null),
22 callMessage
.busy().map(Busy
::from
).orElse(null),
23 callMessage
.hangup().map(Hangup
::from
).orElse(null),
24 callMessage
.iceUpdate().stream().map(IceUpdate
::from
).collect(Collectors
.toList()));
27 record Offer(long id
, String sdp
, String type
, String opaque
) {
29 public static Offer
from(final MessageEnvelope
.Call
.Offer offer
) {
30 return new Offer(offer
.id(),
33 Base64
.getEncoder().encodeToString(offer
.opaque()));
37 public record Answer(long id
, String sdp
, String opaque
) {
39 public static Answer
from(final MessageEnvelope
.Call
.Answer answer
) {
40 return new Answer(answer
.id(), answer
.sdp(), Base64
.getEncoder().encodeToString(answer
.opaque()));
44 public record Busy(long id
) {
46 public static Busy
from(final MessageEnvelope
.Call
.Busy busy
) {
47 return new Busy(busy
.id());
51 public record Hangup(long id
, String type
, int deviceId
, boolean isLegacy
) {
53 public static Hangup
from(final MessageEnvelope
.Call
.Hangup hangup
) {
54 return new Hangup(hangup
.id(), hangup
.type().name(), hangup
.deviceId(), hangup
.isLegacy());
58 public record IceUpdate(long id
, String sdp
, String opaque
) {
60 public static IceUpdate
from(final MessageEnvelope
.Call
.IceUpdate iceUpdate
) {
61 return new IceUpdate(iceUpdate
.id(),
63 Base64
.getEncoder().encodeToString(iceUpdate
.opaque()));