]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/json/JsonSyncMessage.java
Extend json output with number and uuid fields
[signal-cli] / src / main / java / org / asamk / signal / json / JsonSyncMessage.java
1 package org.asamk.signal.json;
2
3 import com.fasterxml.jackson.annotation.JsonInclude;
4 import com.fasterxml.jackson.annotation.JsonProperty;
5
6 import org.asamk.Signal;
7 import org.asamk.signal.manager.Manager;
8 import org.asamk.signal.util.Util;
9 import org.whispersystems.signalservice.api.messages.multidevice.SignalServiceSyncMessage;
10
11 import java.util.Base64;
12 import java.util.List;
13 import java.util.stream.Collectors;
14
15 enum JsonSyncMessageType {
16 CONTACTS_SYNC,
17 GROUPS_SYNC,
18 REQUEST_SYNC
19 }
20
21 class JsonSyncMessage {
22
23 @JsonProperty
24 @JsonInclude(JsonInclude.Include.NON_NULL)
25 final JsonSyncDataMessage sentMessage;
26
27 @JsonProperty
28 @JsonInclude(JsonInclude.Include.NON_NULL)
29 final List<String> blockedNumbers;
30
31 @JsonProperty
32 @JsonInclude(JsonInclude.Include.NON_NULL)
33 final List<String> blockedGroupIds;
34
35 @JsonProperty
36 @JsonInclude(JsonInclude.Include.NON_NULL)
37 final List<JsonSyncReadMessage> readMessages;
38
39 @JsonProperty
40 @JsonInclude(JsonInclude.Include.NON_NULL)
41 final JsonSyncMessageType type;
42
43 JsonSyncMessage(SignalServiceSyncMessage syncMessage, Manager m) {
44 this.sentMessage = syncMessage.getSent().isPresent()
45 ? new JsonSyncDataMessage(syncMessage.getSent().get(), m)
46 : null;
47 if (syncMessage.getBlockedList().isPresent()) {
48 final var base64 = Base64.getEncoder();
49 this.blockedNumbers = syncMessage.getBlockedList()
50 .get()
51 .getAddresses()
52 .stream()
53 .map(Util::getLegacyIdentifier)
54 .collect(Collectors.toList());
55 this.blockedGroupIds = syncMessage.getBlockedList()
56 .get()
57 .getGroupIds()
58 .stream()
59 .map(base64::encodeToString)
60 .collect(Collectors.toList());
61 } else {
62 this.blockedNumbers = null;
63 this.blockedGroupIds = null;
64 }
65 if (syncMessage.getRead().isPresent()) {
66 this.readMessages = syncMessage.getRead()
67 .get()
68 .stream()
69 .map(JsonSyncReadMessage::new)
70 .collect(Collectors.toList());
71 } else {
72 this.readMessages = null;
73 }
74
75 if (syncMessage.getContacts().isPresent()) {
76 this.type = JsonSyncMessageType.CONTACTS_SYNC;
77 } else if (syncMessage.getGroups().isPresent()) {
78 this.type = JsonSyncMessageType.GROUPS_SYNC;
79 } else if (syncMessage.getRequest().isPresent()) {
80 this.type = JsonSyncMessageType.REQUEST_SYNC;
81 } else {
82 this.type = null;
83 }
84 }
85
86 JsonSyncMessage(Signal.SyncMessageReceived messageReceived) {
87 this.sentMessage = new JsonSyncDataMessage(messageReceived);
88 this.blockedNumbers = null;
89 this.blockedGroupIds = null;
90 this.readMessages = null;
91 this.type = null;
92 }
93 }