1 package org
.asamk
.signal
.json
;
3 import com
.fasterxml
.jackson
.annotation
.JsonInclude
;
4 import com
.fasterxml
.jackson
.annotation
.JsonProperty
;
6 import org
.asamk
.Signal
;
7 import org
.asamk
.signal
.manager
.Manager
;
8 import org
.whispersystems
.signalservice
.api
.messages
.SignalServiceContent
;
9 import org
.whispersystems
.signalservice
.api
.messages
.SignalServiceEnvelope
;
10 import org
.whispersystems
.signalservice
.api
.push
.SignalServiceAddress
;
12 import java
.util
.List
;
14 public class JsonMessageEnvelope
{
20 final Integer sourceDevice
;
29 @JsonInclude(JsonInclude
.Include
.NON_NULL
)
30 final JsonDataMessage dataMessage
;
33 @JsonInclude(JsonInclude
.Include
.NON_NULL
)
34 final JsonSyncMessage syncMessage
;
37 @JsonInclude(JsonInclude
.Include
.NON_NULL
)
38 final JsonCallMessage callMessage
;
41 @JsonInclude(JsonInclude
.Include
.NON_NULL
)
42 final JsonReceiptMessage receiptMessage
;
44 public JsonMessageEnvelope(SignalServiceEnvelope envelope
, SignalServiceContent content
, Manager m
) {
45 if (!envelope
.isUnidentifiedSender() && envelope
.hasSource()) {
46 SignalServiceAddress source
= envelope
.getSourceAddress();
47 this.source
= source
.getLegacyIdentifier();
48 this.sourceDevice
= envelope
.getSourceDevice();
49 this.relay
= source
.getRelay().orNull();
50 } else if (envelope
.isUnidentifiedSender() && content
!= null) {
51 this.source
= content
.getSender().getLegacyIdentifier();
52 this.sourceDevice
= content
.getSenderDevice();
56 this.sourceDevice
= null;
59 this.timestamp
= envelope
.getTimestamp();
60 if (envelope
.isReceipt()) {
61 this.receiptMessage
= JsonReceiptMessage
.deliveryReceipt(timestamp
, List
.of(timestamp
));
62 } else if (content
!= null && content
.getReceiptMessage().isPresent()) {
63 this.receiptMessage
= new JsonReceiptMessage(content
.getReceiptMessage().get());
65 this.receiptMessage
= null;
68 this.dataMessage
= content
!= null && content
.getDataMessage().isPresent()
69 ?
new JsonDataMessage(content
.getDataMessage().get(), m
)
71 this.syncMessage
= content
!= null && content
.getSyncMessage().isPresent()
72 ?
new JsonSyncMessage(content
.getSyncMessage().get(), m
)
74 this.callMessage
= content
!= null && content
.getCallMessage().isPresent()
75 ?
new JsonCallMessage(content
.getCallMessage().get())
79 public JsonMessageEnvelope(Signal
.MessageReceived messageReceived
) {
80 source
= messageReceived
.getSender();
83 timestamp
= messageReceived
.getTimestamp();
84 receiptMessage
= null;
85 dataMessage
= new JsonDataMessage(messageReceived
);
90 public JsonMessageEnvelope(Signal
.ReceiptReceived receiptReceived
) {
91 source
= receiptReceived
.getSender();
94 timestamp
= receiptReceived
.getTimestamp();
95 receiptMessage
= JsonReceiptMessage
.deliveryReceipt(timestamp
, List
.of(timestamp
));
101 public JsonMessageEnvelope(Signal
.SyncMessageReceived messageReceived
) {
102 source
= messageReceived
.getSource();
105 timestamp
= messageReceived
.getTimestamp();
106 receiptMessage
= null;
108 syncMessage
= new JsonSyncMessage(messageReceived
);