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);
}
}