/**
* Copyright (C) 2015 AsamK
- * <p>
+ *
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
- * <p>
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- * <p>
+ *
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import org.whispersystems.textsecure.api.messages.*;
import org.whispersystems.textsecure.api.messages.multidevice.TextSecureSyncMessage;
import org.whispersystems.textsecure.api.push.TextSecureAddress;
+import org.whispersystems.textsecure.api.push.exceptions.EncapsulatedExceptions;
+import org.whispersystems.textsecure.api.push.exceptions.NetworkFailureException;
+import org.whispersystems.textsecure.api.push.exceptions.UnregisteredUserException;
+import org.whispersystems.textsecure.api.util.InvalidNumberException;
import java.io.File;
import java.io.FileInputStream;
messageBuilder.withAttachments(textSecureAttachments);
}
TextSecureDataMessage message = messageBuilder.build();
+
+ List<TextSecureAddress> recipients = new ArrayList<>(ns.<String>getList("recipient").size());
for (String recipient : ns.<String>getList("recipient")) {
try {
- messageSender.sendMessage(new TextSecureAddress(recipient), message);
- } catch (UntrustedIdentityException | IOException e) {
- System.out.println("Send message: " + e.getMessage());
+ recipients.add(m.getPushAddress(recipient));
+ } catch (InvalidNumberException e) {
+ System.out.println("Failed to send message to \"" + recipient + "\": " + e.getMessage());
+ }
+ }
+ try {
+ messageSender.sendMessage(recipients, message);
+ } catch (IOException e) {
+ System.out.println("Failed to send message: " + e.getMessage());
+ } catch (EncapsulatedExceptions e) {
+ System.out.println("Failed to send (some) messages:");
+ for (NetworkFailureException n : e.getNetworkExceptions()) {
+ System.out.println("Network failure for \"" + n.getE164number() + "\": " + n.getMessage());
+ }
+ for (UnregisteredUserException n : e.getUnregisteredUserExceptions()) {
+ System.out.println("Unregistered user \"" + n.getE164Number() + "\": " + n.getMessage());
+ }
+ for (UntrustedIdentityException n : e.getUntrustedIdentityExceptions()) {
+ System.out.println("Untrusted Identity for \"" + n.getE164Number() + "\": " + n.getMessage());
}
}
break;
} else {
if (content.getDataMessage().isPresent()) {
TextSecureDataMessage message = content.getDataMessage().get();
-
System.out.println("Body: " + message.getBody().get());
- if (message.getAttachments().isPresent()) {
+
+ if (message.isEndSession()) {
+ m.handleEndSession(envelope.getSource());
+ } else if (message.getAttachments().isPresent()) {
System.out.println("Attachments: ");
for (TextSecureAttachment attachment : message.getAttachments().get()) {
System.out.println("- " + attachment.getContentType() + " (" + (attachment.isPointer() ? "Pointer" : "") + (attachment.isStream() ? "Stream" : "") + ")");