]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/JsonDbusReceiveMessageHandler.java
Extract static methods from Main
[signal-cli] / src / main / java / org / asamk / signal / JsonDbusReceiveMessageHandler.java
1 package org.asamk.signal;
2
3 import org.asamk.Signal;
4 import org.asamk.signal.manager.Manager;
5 import org.freedesktop.dbus.DBusConnection;
6 import org.freedesktop.dbus.exceptions.DBusException;
7 import org.whispersystems.signalservice.api.messages.*;
8
9 import java.util.ArrayList;
10 import java.util.List;
11
12 class JsonDbusReceiveMessageHandler extends JsonReceiveMessageHandler {
13
14 private final DBusConnection conn;
15
16 private final String objectPath;
17
18 JsonDbusReceiveMessageHandler(Manager m, DBusConnection conn, final String objectPath) {
19 super(m);
20 this.conn = conn;
21 this.objectPath = objectPath;
22 }
23
24 static void sendReceivedMessageToDbus(SignalServiceEnvelope envelope, SignalServiceContent content, DBusConnection conn, final String objectPath, Manager m) {
25 if (envelope.isReceipt()) {
26 try {
27 conn.sendSignal(new Signal.ReceiptReceived(
28 objectPath,
29 envelope.getTimestamp(),
30 envelope.getSource()
31 ));
32 } catch (DBusException e) {
33 e.printStackTrace();
34 }
35 } else if (content != null && content.getDataMessage().isPresent()) {
36 SignalServiceDataMessage message = content.getDataMessage().get();
37
38 if (!message.isEndSession() &&
39 !(message.getGroupInfo().isPresent() &&
40 message.getGroupInfo().get().getType() != SignalServiceGroup.Type.DELIVER)) {
41 List<String> attachments = new ArrayList<>();
42 if (message.getAttachments().isPresent()) {
43 for (SignalServiceAttachment attachment : message.getAttachments().get()) {
44 if (attachment.isPointer()) {
45 attachments.add(m.getAttachmentFile(attachment.asPointer().getId()).getAbsolutePath());
46 }
47 }
48 }
49
50 try {
51 conn.sendSignal(new Signal.MessageReceived(
52 objectPath,
53 message.getTimestamp(),
54 envelope.getSource(),
55 message.getGroupInfo().isPresent() ? message.getGroupInfo().get().getGroupId() : new byte[0],
56 message.getBody().isPresent() ? message.getBody().get() : "",
57 attachments));
58 } catch (DBusException e) {
59 e.printStackTrace();
60 }
61 }
62 }
63 }
64
65 @Override
66 public void handleMessage(SignalServiceEnvelope envelope, SignalServiceContent content, Throwable exception) {
67 super.handleMessage(envelope, content, exception);
68
69 sendReceivedMessageToDbus(envelope, content, conn, objectPath, m);
70 }
71 }