]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/json/JsonAttachment.java
Make fields in json classes final and omit unnecessary nulls when serializing
[signal-cli] / src / main / java / org / asamk / signal / json / JsonAttachment.java
index 1949171ae87da900163aea08b886f4a9be579908..1b2a7bc7fde92950c92c970e9052f03d2a5179f4 100644 (file)
@@ -1,31 +1,45 @@
 package org.asamk.signal.json;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
+
 import org.whispersystems.signalservice.api.messages.SignalServiceAttachment;
 import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentPointer;
+import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentStream;
 
 class JsonAttachment {
 
-    String contentType;
-    String filename;
-    String id;
-    int size;
+    @JsonProperty
+    final String contentType;
+
+    @JsonProperty
+    final String filename;
+
+    @JsonProperty
+    final String id;
+
+    @JsonProperty
+    final Long size;
 
     JsonAttachment(SignalServiceAttachment attachment) {
         this.contentType = attachment.getContentType();
 
-        final SignalServiceAttachmentPointer pointer = attachment.asPointer();
         if (attachment.isPointer()) {
-            this.id = String.valueOf(pointer.getRemoteId());
-            if (pointer.getFileName().isPresent()) {
-                this.filename = pointer.getFileName().get();
-            }
-            if (pointer.getSize().isPresent()) {
-                this.size = pointer.getSize().get();
-            }
+            final SignalServiceAttachmentPointer pointer = attachment.asPointer();
+            this.id = pointer.getRemoteId().toString();
+            this.filename = pointer.getFileName().orNull();
+            this.size = pointer.getSize().transform(Integer::longValue).orNull();
+        } else {
+            final SignalServiceAttachmentStream stream = attachment.asStream();
+            this.id = null;
+            this.filename = stream.getFileName().orNull();
+            this.size = stream.getLength();
         }
     }
 
     JsonAttachment(String filename) {
         this.filename = filename;
+        this.contentType = null;
+        this.id = null;
+        this.size = null;
     }
 }