From cd8de7878cb52d872a0400e34f23d45310170400 Mon Sep 17 00:00:00 2001 From: AsamK Date: Tue, 22 Sep 2015 13:23:16 +0200 Subject: [PATCH] Make use of attachment size and preview --- src/main/java/cli/Main.java | 6 ++++-- src/main/java/cli/Manager.java | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/main/java/cli/Main.java b/src/main/java/cli/Main.java index f80a74b6..b1822aaf 100644 --- a/src/main/java/cli/Main.java +++ b/src/main/java/cli/Main.java @@ -262,9 +262,11 @@ public class Main { for (TextSecureAttachment attachment : message.getAttachments().get()) { System.out.println("- " + attachment.getContentType() + " (" + (attachment.isPointer() ? "Pointer" : "") + (attachment.isStream() ? "Stream" : "") + ")"); if (attachment.isPointer()) { - System.out.println(" Id: " + attachment.asPointer().getId() + " Key length: " + attachment.asPointer().getKey().length + (attachment.asPointer().getRelay().isPresent() ? " Relay: " + attachment.asPointer().getRelay().get() : "")); + final TextSecureAttachmentPointer pointer = attachment.asPointer(); + System.out.println(" Id: " + pointer.getId() + " Key length: " + pointer.getKey().length + (pointer.getRelay().isPresent() ? " Relay: " + pointer.getRelay().get() : "")); + System.out.println((pointer.getSize().isPresent() ? " Size: " + pointer.getSize().get() : " bytes") + (pointer.getPreview().isPresent() ? " (Preview is available: " + pointer.getPreview().get().length + " bytes)" : "")); try { - File file = m.retrieveAttachment(attachment.asPointer()); + File file = m.retrieveAttachment(pointer); System.out.println(" Stored plaintext in: " + file); } catch (IOException | InvalidMessageException e) { System.out.println("Failed to retrieve attachment: " + e.getMessage()); diff --git a/src/main/java/cli/Manager.java b/src/main/java/cli/Manager.java index 3f9237fb..fef7c81d 100644 --- a/src/main/java/cli/Manager.java +++ b/src/main/java/cli/Manager.java @@ -292,11 +292,27 @@ class Manager { } finally { if (output != null) { output.close(); + output = null; } if (!tmpFile.delete()) { System.err.println("Failed to delete temp file: " + tmpFile); } } + if (pointer.getPreview().isPresent()) { + File previewFile = new File(outputFile + ".preview"); + try { + output = new FileOutputStream(previewFile); + byte[] preview = pointer.getPreview().get(); + output.write(preview, 0, preview.length); + } catch (FileNotFoundException e) { + e.printStackTrace(); + return null; + } finally { + if (output != null) { + output.close(); + } + } + } return outputFile; } -- 2.50.1