X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/6bd857ad8bf51bdb207bcdaf6ce058c8311f030e..a643609ed2b1875c5f5de96aaf8e30b4f1e35e96:/src/main/java/org/asamk/signal/manager/util/AttachmentUtils.java diff --git a/src/main/java/org/asamk/signal/manager/util/AttachmentUtils.java b/src/main/java/org/asamk/signal/manager/util/AttachmentUtils.java index b9a97073..4be85ddd 100644 --- a/src/main/java/org/asamk/signal/manager/util/AttachmentUtils.java +++ b/src/main/java/org/asamk/signal/manager/util/AttachmentUtils.java @@ -4,12 +4,10 @@ import org.asamk.signal.manager.AttachmentInvalidException; import org.whispersystems.libsignal.util.guava.Optional; 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; import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -34,19 +32,23 @@ public class AttachmentUtils { } public static SignalServiceAttachmentStream createAttachment(File attachmentFile) throws IOException { - InputStream attachmentStream = new FileInputStream(attachmentFile); - final long attachmentSize = attachmentFile.length(); - final String mime = Utils.getFileMimeType(attachmentFile, "application/octet-stream"); + final StreamDetails streamDetails = Utils.createStreamDetailsFromFile(attachmentFile); + return createAttachment(streamDetails, Optional.of(attachmentFile.getName())); + } + + public static SignalServiceAttachmentStream createAttachment( + StreamDetails streamDetails, Optional name + ) { // TODO mabybe add a parameter to set the voiceNote, borderless, preview, width, height and caption option final long uploadTimestamp = System.currentTimeMillis(); Optional preview = Optional.absent(); Optional caption = Optional.absent(); Optional blurHash = Optional.absent(); final Optional resumableUploadSpec = Optional.absent(); - return new SignalServiceAttachmentStream(attachmentStream, - mime, - attachmentSize, - Optional.of(attachmentFile.getName()), + return new SignalServiceAttachmentStream(streamDetails.getStream(), + streamDetails.getContentType(), + streamDetails.getLength(), + name, false, false, preview, @@ -60,20 +62,10 @@ public class AttachmentUtils { resumableUploadSpec); } - public static File retrieveAttachment(SignalServiceAttachmentStream stream, File outputFile) throws IOException { + public static void retrieveAttachment( + SignalServiceAttachmentStream stream, OutputStream output + ) throws IOException { InputStream input = stream.getInputStream(); - - try (OutputStream output = new FileOutputStream(outputFile)) { - byte[] buffer = new byte[4096]; - int read; - - while ((read = input.read(buffer)) != -1) { - output.write(buffer, 0, read); - } - } catch (FileNotFoundException e) { - e.printStackTrace(); - return null; - } - return outputFile; + IOUtils.copyStream(input, output); } }