From: AsamK Date: Wed, 25 May 2022 20:31:15 +0000 (+0200) Subject: Refactor attachment upload helpers X-Git-Tag: v0.10.7~9 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/0f701df91f0c76059bd249ad2df0069ec9497061?ds=sidebyside Refactor attachment upload helpers --- diff --git a/lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java b/lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java index 22fcc141..40bd7240 100644 --- a/lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java +++ b/lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java @@ -590,7 +590,7 @@ class ManagerImpl implements Manager { stickerPack.getPackKey(), stickerId, manifestSticker.emoji(), - AttachmentUtils.createAttachment(streamDetails, Optional.empty()))); + AttachmentUtils.createAttachmentStream(streamDetails, Optional.empty()))); } } diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/AttachmentHelper.java b/lib/src/main/java/org/asamk/signal/manager/helper/AttachmentHelper.java index bad3d788..8793ce93 100644 --- a/lib/src/main/java/org/asamk/signal/manager/helper/AttachmentHelper.java +++ b/lib/src/main/java/org/asamk/signal/manager/helper/AttachmentHelper.java @@ -12,6 +12,7 @@ import org.slf4j.LoggerFactory; import org.whispersystems.signalservice.api.messages.SignalServiceAttachment; import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentPointer; import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentRemoteId; +import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentStream; import org.whispersystems.signalservice.api.push.exceptions.MissingConfigurationException; import java.io.File; @@ -39,21 +40,26 @@ public class AttachmentHelper { } public List uploadAttachments(final List attachments) throws AttachmentInvalidException, IOException { - var attachmentStreams = AttachmentUtils.getSignalServiceAttachments(attachments); + var attachmentStreams = AttachmentUtils.createAttachmentStreams(attachments); // Upload attachments here, so we only upload once even for multiple recipients - var messageSender = dependencies.getMessageSender(); var attachmentPointers = new ArrayList(attachmentStreams.size()); - for (var attachment : attachmentStreams) { - if (attachment.isStream()) { - attachmentPointers.add(messageSender.uploadAttachment(attachment.asStream())); - } else if (attachment.isPointer()) { - attachmentPointers.add(attachment.asPointer()); - } + for (var attachmentStream : attachmentStreams) { + attachmentPointers.add(uploadAttachment(attachmentStream)); } return attachmentPointers; } + public SignalServiceAttachmentPointer uploadAttachment(String attachment) throws IOException, AttachmentInvalidException { + var attachmentStream = AttachmentUtils.createAttachmentStream(new File(attachment)); + return uploadAttachment(attachmentStream); + } + + public SignalServiceAttachmentPointer uploadAttachment(SignalServiceAttachmentStream attachment) throws IOException { + var messageSender = dependencies.getMessageSender(); + return messageSender.uploadAttachment(attachment); + } + public void downloadAttachment(final SignalServiceAttachment attachment) { if (!attachment.isPointer()) { logger.warn("Invalid state, can't store an attachment stream."); diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/GroupHelper.java b/lib/src/main/java/org/asamk/signal/manager/helper/GroupHelper.java index f4e92320..3ed642ed 100644 --- a/lib/src/main/java/org/asamk/signal/manager/helper/GroupHelper.java +++ b/lib/src/main/java/org/asamk/signal/manager/helper/GroupHelper.java @@ -98,7 +98,7 @@ public class GroupHelper { return Optional.empty(); } - return Optional.of(AttachmentUtils.createAttachment(streamDetails, Optional.empty())); + return Optional.of(AttachmentUtils.createAttachmentStream(streamDetails, Optional.empty())); } public GroupInfoV2 getOrMigrateGroup( diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/SyncHelper.java b/lib/src/main/java/org/asamk/signal/manager/helper/SyncHelper.java index 035e5770..4e77d738 100644 --- a/lib/src/main/java/org/asamk/signal/manager/helper/SyncHelper.java +++ b/lib/src/main/java/org/asamk/signal/manager/helper/SyncHelper.java @@ -302,7 +302,7 @@ public class SyncHelper { return Optional.empty(); } - return Optional.of(AttachmentUtils.createAttachment(streamDetails, Optional.empty())); + return Optional.of(AttachmentUtils.createAttachmentStream(streamDetails, Optional.empty())); } private void downloadContactAvatar(SignalServiceAttachment avatar, RecipientAddress address) { diff --git a/lib/src/main/java/org/asamk/signal/manager/util/AttachmentUtils.java b/lib/src/main/java/org/asamk/signal/manager/util/AttachmentUtils.java index a19a6fcf..a94d7673 100644 --- a/lib/src/main/java/org/asamk/signal/manager/util/AttachmentUtils.java +++ b/lib/src/main/java/org/asamk/signal/manager/util/AttachmentUtils.java @@ -1,7 +1,6 @@ package org.asamk.signal.manager.util; import org.asamk.signal.manager.api.AttachmentInvalidException; -import org.whispersystems.signalservice.api.messages.SignalServiceAttachment; import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentStream; import org.whispersystems.signalservice.api.util.StreamDetails; import org.whispersystems.signalservice.internal.push.http.ResumableUploadSpec; @@ -14,30 +13,30 @@ import java.util.Optional; public class AttachmentUtils { - public static List getSignalServiceAttachments(List attachments) throws AttachmentInvalidException { - List signalServiceAttachments = null; - if (attachments != null) { - signalServiceAttachments = new ArrayList<>(attachments.size()); - for (var attachment : attachments) { - try { - signalServiceAttachments.add(createAttachment(new File(attachment))); - } catch (IOException e) { - throw new AttachmentInvalidException(attachment, e); - } - } + public static List createAttachmentStreams(List attachments) throws AttachmentInvalidException { + if (attachments == null) { + return null; + } + final var signalServiceAttachments = new ArrayList(attachments.size()); + for (var attachment : attachments) { + signalServiceAttachments.add(createAttachmentStream(new File(attachment))); } return signalServiceAttachments; } - public static SignalServiceAttachmentStream createAttachment(File attachmentFile) throws IOException { - final var streamDetails = Utils.createStreamDetailsFromFile(attachmentFile); - return createAttachment(streamDetails, Optional.of(attachmentFile.getName())); + public static SignalServiceAttachmentStream createAttachmentStream(File attachmentFile) throws AttachmentInvalidException { + try { + final var streamDetails = Utils.createStreamDetailsFromFile(attachmentFile); + return createAttachmentStream(streamDetails, Optional.of(attachmentFile.getName())); + } catch (IOException e) { + throw new AttachmentInvalidException(attachmentFile.toString(), e); + } } - public static SignalServiceAttachmentStream createAttachment( + public static SignalServiceAttachmentStream createAttachmentStream( StreamDetails streamDetails, Optional name ) { - // TODO mabybe add a parameter to set the voiceNote, borderless, preview, width, height and caption option + // TODO maybe add a parameter to set the voiceNote, borderless, preview, width, height and caption option final var uploadTimestamp = System.currentTimeMillis(); Optional preview = Optional.empty(); Optional caption = Optional.empty();