]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/manager/util/AttachmentUtils.java
Prevent incorrect error log about saving failed if an exception was thrown
[signal-cli] / src / main / java / org / asamk / signal / manager / util / AttachmentUtils.java
index b9a97073cd41fbca5d9088e183a4c23066f69cf9..ec043cfd628706bc41e4c78687c785a19ebdf2b5 100644 (file)
@@ -4,15 +4,11 @@ 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;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -34,19 +30,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<String> name
+    ) {
         // TODO mabybe add a parameter to set the voiceNote, borderless, preview, width, height and caption option
         final long uploadTimestamp = System.currentTimeMillis();
         Optional<byte[]> preview = Optional.absent();
         Optional<String> caption = Optional.absent();
         Optional<String> blurHash = Optional.absent();
         final Optional<ResumableUploadSpec> 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,
@@ -59,21 +59,4 @@ public class AttachmentUtils {
                 null,
                 resumableUploadSpec);
     }
-
-    public static File retrieveAttachment(SignalServiceAttachmentStream stream, File outputFile) 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;
-    }
 }