]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/json/JsonSyncMessage.java
Output json when receiving messages from dbus and --json parameter is given
[signal-cli] / src / main / java / org / asamk / signal / json / JsonSyncMessage.java
diff --git a/src/main/java/org/asamk/signal/json/JsonSyncMessage.java b/src/main/java/org/asamk/signal/json/JsonSyncMessage.java
new file mode 100644 (file)
index 0000000..27766bd
--- /dev/null
@@ -0,0 +1,50 @@
+package org.asamk.signal.json;
+
+import org.asamk.Signal;
+import org.whispersystems.signalservice.api.messages.multidevice.ReadMessage;
+import org.whispersystems.signalservice.api.messages.multidevice.SignalServiceSyncMessage;
+import org.whispersystems.signalservice.api.push.SignalServiceAddress;
+
+import java.util.ArrayList;
+import java.util.List;
+
+enum JsonSyncMessageType {
+    CONTACTS_SYNC,
+    GROUPS_SYNC,
+    REQUEST_SYNC
+}
+
+class JsonSyncMessage {
+
+    JsonSyncDataMessage sentMessage;
+    List<String> blockedNumbers;
+    List<ReadMessage> readMessages;
+    JsonSyncMessageType type;
+
+    JsonSyncMessage(SignalServiceSyncMessage syncMessage) {
+        if (syncMessage.getSent().isPresent()) {
+            this.sentMessage = new JsonSyncDataMessage(syncMessage.getSent().get());
+        }
+        if (syncMessage.getBlockedList().isPresent()) {
+            this.blockedNumbers = new ArrayList<>(syncMessage.getBlockedList().get().getAddresses().size());
+            for (SignalServiceAddress address : syncMessage.getBlockedList().get().getAddresses()) {
+                this.blockedNumbers.add(address.getNumber().get());
+            }
+        }
+        if (syncMessage.getRead().isPresent()) {
+            this.readMessages = syncMessage.getRead().get();
+        }
+
+        if (syncMessage.getContacts().isPresent()) {
+            this.type = JsonSyncMessageType.CONTACTS_SYNC;
+        } else if (syncMessage.getGroups().isPresent()) {
+            this.type = JsonSyncMessageType.GROUPS_SYNC;
+        } else if (syncMessage.getRequest().isPresent()) {
+            this.type = JsonSyncMessageType.REQUEST_SYNC;
+        }
+    }
+
+    JsonSyncMessage(Signal.SyncMessageReceived messageReceived) {
+        sentMessage = new JsonSyncDataMessage(messageReceived);
+    }
+}