]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/Main.java
Update signal-service-java dependency
[signal-cli] / src / main / java / org / asamk / signal / Main.java
index 3b2fbadbb1fb6efc447bb2e3f946eee5815e2a0a..7f85f28077809f02b26c439fdfd2d6f80c8bf46d 100644 (file)
@@ -100,7 +100,7 @@ public class Main {
                         busType = DBusConnection.SESSION;
                     }
                     dBusConn = DBusConnection.getConnection(busType);
                         busType = DBusConnection.SESSION;
                     }
                     dBusConn = DBusConnection.getConnection(busType);
-                    ts = (Signal) dBusConn.getRemoteObject(
+                    ts = dBusConn.getRemoteObject(
                             SIGNAL_BUSNAME, SIGNAL_OBJECTPATH,
                             Signal.class);
                 } catch (UnsatisfiedLinkError e) {
                             SIGNAL_BUSNAME, SIGNAL_OBJECTPATH,
                             Signal.class);
                 } catch (UnsatisfiedLinkError e) {
@@ -683,7 +683,7 @@ public class Main {
                         }
                         ignoreAttachments = ns.getBoolean("ignore_attachments");
                         try {
                         }
                         ignoreAttachments = ns.getBoolean("ignore_attachments");
                         try {
-                            m.receiveMessages(1, TimeUnit.HOURS, false, ignoreAttachments, new DbusReceiveMessageHandler(m, conn));
+                            m.receiveMessages(1, TimeUnit.HOURS, false, ignoreAttachments, ns.getBoolean("json") ? new JsonDbusReceiveMessageHandler(m, conn) : new DbusReceiveMessageHandler(m, conn));
                         } catch (IOException e) {
                             System.err.println("Error while receiving messages: " + e.getMessage());
                             return 3;
                         } catch (IOException e) {
                             System.err.println("Error while receiving messages: " + e.getMessage());
                             return 3;
@@ -984,6 +984,9 @@ public class Main {
                 System.out.println("Relayed by: " + source.getRelay().get());
             }
             System.out.println("Timestamp: " + formatTimestamp(envelope.getTimestamp()));
                 System.out.println("Relayed by: " + source.getRelay().get());
             }
             System.out.println("Timestamp: " + formatTimestamp(envelope.getTimestamp()));
+            if (envelope.isUnidentifiedSender()) {
+                System.out.println("Sent by unidentified/sealed sender");
+            }
 
             if (envelope.isReceipt()) {
                 System.out.println("Got receipt.");
 
             if (envelope.isReceipt()) {
                 System.out.println("Got receipt.");
@@ -1120,6 +1123,20 @@ public class Main {
                             System.out.println("    " + formatTimestamp(timestamp));
                         }
                     }
                             System.out.println("    " + formatTimestamp(timestamp));
                         }
                     }
+                    if (content.getTypingMessage().isPresent()) {
+                        System.out.println("Received a typing message");
+                        SignalServiceTypingMessage typingMessage = content.getTypingMessage().get();
+                        System.out.println(" - Action: " + typingMessage.getAction());
+                        System.out.println(" - Timestamp: " + formatTimestamp(typingMessage.getTimestamp()));
+                        if (typingMessage.getGroupId().isPresent()) {
+                            GroupInfo group = m.getGroup(typingMessage.getGroupId().get());
+                            if (group != null) {
+                                System.out.println("  Name: " + group.name);
+                            } else {
+                                System.out.println("  Name: <Unknown group>");
+                            }
+                        }
+                    }
                 }
             } else {
                 System.out.println("Unknown message received.");
                 }
             } else {
                 System.out.println("Unknown message received.");
@@ -1167,7 +1184,7 @@ public class Main {
             if (message.getExpiresInSeconds() > 0) {
                 System.out.println("Expires in: " + message.getExpiresInSeconds() + " seconds");
             }
             if (message.getExpiresInSeconds() > 0) {
                 System.out.println("Expires in: " + message.getExpiresInSeconds() + " seconds");
             }
-            if (message.isProfileKeyUpdate() && message.getProfileKey().isPresent()) {
+            if (message.getProfileKey().isPresent()) {
                 System.out.println("Profile key update, key length:" + message.getProfileKey().get().length);
             }
 
                 System.out.println("Profile key update, key length:" + message.getProfileKey().get().length);
             }
 
@@ -1182,7 +1199,9 @@ public class Main {
                         System.out.println("  Filename: " + attachment.getFileName());
                         System.out.println("  Type: " + attachment.getContentType());
                         System.out.println("  Thumbnail:");
                         System.out.println("  Filename: " + attachment.getFileName());
                         System.out.println("  Type: " + attachment.getContentType());
                         System.out.println("  Thumbnail:");
-                        printAttachment(attachment.getThumbnail());
+                        if (attachment.getThumbnail() != null) {
+                            printAttachment(attachment.getThumbnail());
+                        }
                     }
                 }
             }
                     }
                 }
             }
@@ -1199,7 +1218,7 @@ public class Main {
             System.out.println("- " + attachment.getContentType() + " (" + (attachment.isPointer() ? "Pointer" : "") + (attachment.isStream() ? "Stream" : "") + ")");
             if (attachment.isPointer()) {
                 final SignalServiceAttachmentPointer pointer = attachment.asPointer();
             System.out.println("- " + attachment.getContentType() + " (" + (attachment.isPointer() ? "Pointer" : "") + (attachment.isStream() ? "Stream" : "") + ")");
             if (attachment.isPointer()) {
                 final SignalServiceAttachmentPointer pointer = attachment.asPointer();
-                System.out.println("  Id: " + pointer.getId() + " Key length: " + pointer.getKey().length + (pointer.getRelay().isPresent() ? " Relay: " + pointer.getRelay().get() : ""));
+                System.out.println("  Id: " + pointer.getId() + " Key length: " + pointer.getKey().length);
                 System.out.println("  Filename: " + (pointer.getFileName().isPresent() ? pointer.getFileName().get() : "-"));
                 System.out.println("  Size: " + (pointer.getSize().isPresent() ? pointer.getSize().get() + " bytes" : "<unavailable>") + (pointer.getPreview().isPresent() ? " (Preview is available: " + pointer.getPreview().get().length + " bytes)" : ""));
                 System.out.println("  Voice note: " + (pointer.getVoiceNote() ? "yes" : "no"));
                 System.out.println("  Filename: " + (pointer.getFileName().isPresent() ? pointer.getFileName().get() : "-"));
                 System.out.println("  Size: " + (pointer.getSize().isPresent() ? pointer.getSize().get() + " bytes" : "<unavailable>") + (pointer.getPreview().isPresent() ? " (Preview is available: " + pointer.getPreview().get().length + " bytes)" : ""));
                 System.out.println("  Voice note: " + (pointer.getVoiceNote() ? "yes" : "no"));
@@ -1224,6 +1243,57 @@ public class Main {
         public void handleMessage(SignalServiceEnvelope envelope, SignalServiceContent content, Throwable exception) {
             super.handleMessage(envelope, content, exception);
 
         public void handleMessage(SignalServiceEnvelope envelope, SignalServiceContent content, Throwable exception) {
             super.handleMessage(envelope, content, exception);
 
+            JsonDbusReceiveMessageHandler.sendReceivedMessageToDbus(envelope, content, conn, m);
+        }
+    }
+
+    private static class JsonReceiveMessageHandler implements Manager.ReceiveMessageHandler {
+        final Manager m;
+        final ObjectMapper jsonProcessor;
+
+        public JsonReceiveMessageHandler(Manager m) {
+            this.m = m;
+            this.jsonProcessor = new ObjectMapper();
+            jsonProcessor.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); // disable autodetect
+            jsonProcessor.enable(SerializationFeature.WRITE_NULL_MAP_VALUES);
+            jsonProcessor.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
+            jsonProcessor.disable(JsonGenerator.Feature.AUTO_CLOSE_TARGET);
+        }
+
+        @Override
+        public void handleMessage(SignalServiceEnvelope envelope, SignalServiceContent content, Throwable exception) {
+            ObjectNode result = jsonProcessor.createObjectNode();
+            if (exception != null) {
+                result.putPOJO("error", new JsonError(exception));
+            }
+            if (envelope != null) {
+                result.putPOJO("envelope", new JsonMessageEnvelope(envelope, content));
+            }
+            try {
+                jsonProcessor.writeValue(System.out, result);
+                System.out.println();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    private static class JsonDbusReceiveMessageHandler extends JsonReceiveMessageHandler {
+        final DBusConnection conn;
+
+        public JsonDbusReceiveMessageHandler(Manager m, DBusConnection conn) {
+            super(m);
+            this.conn = conn;
+        }
+
+        @Override
+        public void handleMessage(SignalServiceEnvelope envelope, SignalServiceContent content, Throwable exception) {
+            super.handleMessage(envelope, content, exception);
+
+            sendReceivedMessageToDbus(envelope, content, conn, m);
+        }
+
+        private static void sendReceivedMessageToDbus(SignalServiceEnvelope envelope, SignalServiceContent content, DBusConnection conn, Manager m) {
             if (envelope.isReceipt()) {
                 try {
                     conn.sendSignal(new Signal.ReceiptReceived(
             if (envelope.isReceipt()) {
                 try {
                     conn.sendSignal(new Signal.ReceiptReceived(
@@ -1265,37 +1335,6 @@ public class Main {
         }
     }
 
         }
     }
 
-    private static class JsonReceiveMessageHandler implements Manager.ReceiveMessageHandler {
-        final Manager m;
-        final ObjectMapper jsonProcessor;
-
-        public JsonReceiveMessageHandler(Manager m) {
-            this.m = m;
-            this.jsonProcessor = new ObjectMapper();
-            jsonProcessor.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); // disable autodetect
-            jsonProcessor.enable(SerializationFeature.WRITE_NULL_MAP_VALUES);
-            jsonProcessor.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
-            jsonProcessor.disable(JsonGenerator.Feature.AUTO_CLOSE_TARGET);
-        }
-
-        @Override
-        public void handleMessage(SignalServiceEnvelope envelope, SignalServiceContent content, Throwable exception) {
-            ObjectNode result = jsonProcessor.createObjectNode();
-            if (exception != null) {
-                result.putPOJO("error", new JsonError(exception));
-            }
-            if (envelope != null) {
-                result.putPOJO("envelope", new JsonMessageEnvelope(envelope, content));
-            }
-            try {
-                jsonProcessor.writeValue(System.out, result);
-                System.out.println();
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
-        }
-    }
-
     private static String formatTimestamp(long timestamp) {
         Date date = new Date(timestamp);
         final DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); // Quoted "Z" to indicate UTC, no timezone offset
     private static String formatTimestamp(long timestamp) {
         Date date = new Date(timestamp);
         final DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); // Quoted "Z" to indicate UTC, no timezone offset