]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/json/JsonAttachment.java
Use record classes
[signal-cli] / src / main / java / org / asamk / signal / json / JsonAttachment.java
index a96fc5341e58403a61b96d12448290dfa6f305af..b78722d1249a87ef1da1e2549b5a8a146349b6eb 100644 (file)
@@ -1,43 +1,25 @@
 package org.asamk.signal.json;
 
-import com.fasterxml.jackson.annotation.JsonProperty;
-
 import org.whispersystems.signalservice.api.messages.SignalServiceAttachment;
 
-class JsonAttachment {
-
-    @JsonProperty
-    final String contentType;
-
-    @JsonProperty
-    final String filename;
-
-    @JsonProperty
-    final String id;
-
-    @JsonProperty
-    final Long size;
-
-    JsonAttachment(SignalServiceAttachment attachment) {
-        this.contentType = attachment.getContentType();
+record JsonAttachment(String contentType, String filename, String id, Long size) {
 
+    static JsonAttachment from(SignalServiceAttachment attachment) {
         if (attachment.isPointer()) {
             final var pointer = attachment.asPointer();
-            this.id = pointer.getRemoteId().toString();
-            this.filename = pointer.getFileName().orNull();
-            this.size = pointer.getSize().transform(Integer::longValue).orNull();
+            final var id = pointer.getRemoteId().toString();
+            final var filename = pointer.getFileName().orNull();
+            final var size = pointer.getSize().transform(Integer::longValue).orNull();
+            return new JsonAttachment(attachment.getContentType(), filename, id, size);
         } else {
             final var stream = attachment.asStream();
-            this.id = null;
-            this.filename = stream.getFileName().orNull();
-            this.size = stream.getLength();
+            final var filename = stream.getFileName().orNull();
+            final var size = stream.getLength();
+            return new JsonAttachment(attachment.getContentType(), filename, null, size);
         }
     }
 
-    JsonAttachment(String filename) {
-        this.filename = filename;
-        this.contentType = null;
-        this.id = null;
-        this.size = null;
+    static JsonAttachment from(String filename) {
+        return new JsonAttachment(filename, null, null, null);
     }
 }