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