]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/json/JsonMessageEnvelope.java
Download quote attachment thumbnails and slightly improve the quote output
[signal-cli] / src / main / java / org / asamk / signal / json / JsonMessageEnvelope.java
1 package org.asamk.signal.json;
2
3 import org.asamk.Signal;
4 import org.whispersystems.signalservice.api.messages.SignalServiceContent;
5 import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope;
6 import org.whispersystems.signalservice.api.push.SignalServiceAddress;
7
8 import java.util.List;
9
10 public class JsonMessageEnvelope {
11
12 String source;
13 int sourceDevice;
14 String relay;
15 long timestamp;
16 JsonDataMessage dataMessage;
17 JsonSyncMessage syncMessage;
18 JsonCallMessage callMessage;
19 JsonReceiptMessage receiptMessage;
20
21 public JsonMessageEnvelope(SignalServiceEnvelope envelope, SignalServiceContent content) {
22 if (!envelope.isUnidentifiedSender() && envelope.hasSource()) {
23 SignalServiceAddress source = envelope.getSourceAddress();
24 this.source = source.getLegacyIdentifier();
25 this.relay = source.getRelay().isPresent() ? source.getRelay().get() : null;
26 }
27 this.sourceDevice = envelope.getSourceDevice();
28 this.timestamp = envelope.getTimestamp();
29 if (envelope.isReceipt()) {
30 this.receiptMessage = JsonReceiptMessage.deliveryReceipt(timestamp, List.of(timestamp));
31 }
32 if (content != null) {
33 if (envelope.isUnidentifiedSender()) {
34 this.source = content.getSender().getLegacyIdentifier();
35 this.sourceDevice = content.getSenderDevice();
36 }
37 if (content.getDataMessage().isPresent()) {
38 this.dataMessage = new JsonDataMessage(content.getDataMessage().get());
39 }
40 if (content.getSyncMessage().isPresent()) {
41 this.syncMessage = new JsonSyncMessage(content.getSyncMessage().get());
42 }
43 if (content.getCallMessage().isPresent()) {
44 this.callMessage = new JsonCallMessage(content.getCallMessage().get());
45 }
46 if (content.getReceiptMessage().isPresent()) {
47 this.receiptMessage = new JsonReceiptMessage(content.getReceiptMessage().get());
48 }
49 }
50 }
51
52 public JsonMessageEnvelope(Signal.MessageReceived messageReceived) {
53 source = messageReceived.getSender();
54 timestamp = messageReceived.getTimestamp();
55 dataMessage = new JsonDataMessage(messageReceived);
56 }
57
58 public JsonMessageEnvelope(Signal.ReceiptReceived receiptReceived) {
59 source = receiptReceived.getSender();
60 timestamp = receiptReceived.getTimestamp();
61 receiptMessage = JsonReceiptMessage.deliveryReceipt(timestamp, List.of(timestamp));
62 }
63
64 public JsonMessageEnvelope(Signal.SyncMessageReceived messageReceived) {
65 source = messageReceived.getSource();
66 timestamp = messageReceived.getTimestamp();
67 syncMessage = new JsonSyncMessage(messageReceived);
68 }
69 }