]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/json/JsonCallMessage.java
Fix inspections
[signal-cli] / src / main / java / org / asamk / signal / json / JsonCallMessage.java
1 package org.asamk.signal.json;
2
3 import com.fasterxml.jackson.annotation.JsonInclude;
4
5 import org.asamk.signal.manager.api.MessageEnvelope;
6
7 import java.util.Base64;
8 import java.util.List;
9
10 record JsonCallMessage(
11 @JsonInclude(JsonInclude.Include.NON_NULL) Offer offerMessage,
12 @JsonInclude(JsonInclude.Include.NON_NULL) Answer answerMessage,
13 @JsonInclude(JsonInclude.Include.NON_NULL) Busy busyMessage,
14 @JsonInclude(JsonInclude.Include.NON_NULL) Hangup hangupMessage,
15 @JsonInclude(JsonInclude.Include.NON_EMPTY) List<IceUpdate> iceUpdateMessages
16 ) {
17
18 static JsonCallMessage from(MessageEnvelope.Call callMessage) {
19 return new JsonCallMessage(callMessage.offer().map(Offer::from).orElse(null),
20 callMessage.answer().map(Answer::from).orElse(null),
21 callMessage.busy().map(Busy::from).orElse(null),
22 callMessage.hangup().map(Hangup::from).orElse(null),
23 callMessage.iceUpdate().stream().map(IceUpdate::from).toList());
24 }
25
26 record Offer(long id, String sdp, String type, String opaque) {
27
28 public static Offer from(final MessageEnvelope.Call.Offer offer) {
29 return new Offer(offer.id(),
30 offer.sdp(),
31 offer.type().name(),
32 Base64.getEncoder().encodeToString(offer.opaque()));
33 }
34 }
35
36 public record Answer(long id, String sdp, String opaque) {
37
38 public static Answer from(final MessageEnvelope.Call.Answer answer) {
39 return new Answer(answer.id(), answer.sdp(), Base64.getEncoder().encodeToString(answer.opaque()));
40 }
41 }
42
43 public record Busy(long id) {
44
45 public static Busy from(final MessageEnvelope.Call.Busy busy) {
46 return new Busy(busy.id());
47 }
48 }
49
50 public record Hangup(long id, String type, int deviceId) {
51
52 public static Hangup from(final MessageEnvelope.Call.Hangup hangup) {
53 return new Hangup(hangup.id(), hangup.type().name(), hangup.deviceId());
54 }
55 }
56
57 public record IceUpdate(long id, String sdp, String opaque) {
58
59 public static IceUpdate from(final MessageEnvelope.Call.IceUpdate iceUpdate) {
60 return new IceUpdate(iceUpdate.id(),
61 iceUpdate.sdp(),
62 Base64.getEncoder().encodeToString(iceUpdate.opaque()));
63 }
64 }
65 }