]> nmode's Git Repositories - signal-cli/blob - 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
1 package org.asamk.signal.json;
2
3 import com.fasterxml.jackson.annotation.JsonProperty;
4
5 import org.whispersystems.signalservice.api.messages.SignalServiceAttachment;
6 import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentPointer;
7 import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentStream;
8
9 class JsonAttachment {
10
11 @JsonProperty
12 final String contentType;
13
14 @JsonProperty
15 final String filename;
16
17 @JsonProperty
18 final String id;
19
20 @JsonProperty
21 final Long size;
22
23 JsonAttachment(SignalServiceAttachment attachment) {
24 this.contentType = attachment.getContentType();
25
26 if (attachment.isPointer()) {
27 final SignalServiceAttachmentPointer pointer = attachment.asPointer();
28 this.id = pointer.getRemoteId().toString();
29 this.filename = pointer.getFileName().orNull();
30 this.size = pointer.getSize().transform(Integer::longValue).orNull();
31 } else {
32 final SignalServiceAttachmentStream stream = attachment.asStream();
33 this.id = null;
34 this.filename = stream.getFileName().orNull();
35 this.size = stream.getLength();
36 }
37 }
38
39 JsonAttachment(String filename) {
40 this.filename = filename;
41 this.contentType = null;
42 this.id = null;
43 this.size = null;
44 }
45 }