]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/StickerPackStore.java
Add support for sending stickers
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / StickerPackStore.java
index 51ebece3ec3310e11bf78002f8f00c34f98a54c1..778e748ad6340891a02b24404c3cbdb97a547a49 100644 (file)
@@ -4,10 +4,13 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 
 import org.asamk.signal.manager.storage.stickers.StickerPackId;
 import org.asamk.signal.manager.util.IOUtils;
+import org.asamk.signal.manager.util.Utils;
+import org.whispersystems.signalservice.api.util.StreamDetails;
 import org.whispersystems.signalservice.internal.util.Hex;
 
 import java.io.BufferedWriter;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -26,8 +29,22 @@ public class StickerPackStore {
         return getStickerPackManifestFile(stickerPackId).exists();
     }
 
+    public JsonStickerPack retrieveManifest(StickerPackId stickerPackId) throws IOException {
+        try (final var inputStream = new FileInputStream(getStickerPackManifestFile(stickerPackId))) {
+            return new ObjectMapper().readValue(inputStream, JsonStickerPack.class);
+        }
+    }
+
+    public StreamDetails retrieveSticker(final StickerPackId stickerPackId, final int stickerId) throws IOException {
+        final var stickerFile = getStickerPackStickerFile(stickerPackId, stickerId);
+        if (!stickerFile.exists()) {
+            return null;
+        }
+        return Utils.createStreamDetailsFromFile(stickerFile);
+    }
+
     public void storeManifest(StickerPackId stickerPackId, JsonStickerPack manifest) throws IOException {
-        try (OutputStream output = new FileOutputStream(getStickerPackManifestFile(stickerPackId))) {
+        try (final var output = new FileOutputStream(getStickerPackManifestFile(stickerPackId))) {
             try (var writer = new BufferedWriter(new OutputStreamWriter(output, StandardCharsets.UTF_8))) {
                 new ObjectMapper().writeValue(writer, manifest);
             }
@@ -36,7 +53,7 @@ public class StickerPackStore {
 
     public void storeSticker(StickerPackId stickerPackId, int stickerId, StickerStorer storer) throws IOException {
         createStickerPackDir(stickerPackId);
-        try (OutputStream output = new FileOutputStream(getStickerPackStickerFile(stickerPackId, stickerId))) {
+        try (final var output = new FileOutputStream(getStickerPackStickerFile(stickerPackId, stickerId))) {
             storer.store(output);
         }
     }