]> nmode's Git Repositories - signal-cli/commitdiff
implement Dbus stickerpack method (#740)
authorJohn Freed <okgithub@johnfreed.com>
Sun, 26 Sep 2021 06:59:38 +0000 (08:59 +0200)
committerGitHub <noreply@github.com>
Sun, 26 Sep 2021 06:59:38 +0000 (08:59 +0200)
implement uploadStickerPack

update documentation

man/signal-cli-dbus.5.adoc
src/main/java/org/asamk/Signal.java
src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java

index d562d06479b2871fc80f39bb0b9a23621e849b9b..b7dfcfe1699926bef2f4d736a666cc7b6bfd0fd0 100755 (executable)
@@ -248,6 +248,12 @@ version() -> version<s>::
 isRegistred -> result<b>::
 * result : Currently always returns 1=true
 
+uploadStickerPack(stickerPackPath<s>) -> url<s>::
+* stickerPackPath : Path to the manifest.json file or a zip file in the same directory
+* url             : URL of sticker pack after successful upload
+
+Exception: Failure
+
 == Signals
 
 SyncMessageReceived (timestamp<x>, sender<s>, destination<s>, groupId<ay>,message<s>, attachments<as>)::
index 821e04d9637404df6b713dac5e9cbce00e09c9a9..1eb96510f55f4463cd02be1cad043f478016b7ff 100644 (file)
@@ -107,6 +107,8 @@ public interface Signal extends DBusInterface {
 
     byte[] joinGroup(final String groupLink) throws Error.Failure;
 
+    String uploadStickerPack(String stickerPackPath) throws Error.Failure;
+
     class MessageReceived extends DBusSignal {
 
         private final long timestamp;
index 897033876a618840c884e8398ec02c5224e90baa..0fde767d75411584c77cd99d37d09724c7a6c49f 100644 (file)
@@ -5,6 +5,7 @@ import org.asamk.signal.BaseConfig;
 import org.asamk.signal.manager.AttachmentInvalidException;
 import org.asamk.signal.manager.Manager;
 import org.asamk.signal.manager.NotMasterDeviceException;
+import org.asamk.signal.manager.StickerPackInvalidException;
 import org.asamk.signal.manager.UntrustedIdentityException;
 import org.asamk.signal.manager.api.Message;
 import org.asamk.signal.manager.api.RecipientIdentifier;
@@ -536,6 +537,18 @@ public class DbusSignalImpl implements Signal {
         }
     }
 
+    @Override
+    public String uploadStickerPack(String stickerPackPath) {
+        File path = new File(stickerPackPath);
+        try {
+            return m.uploadStickerPack(path).toString();
+        } catch (IOException e) {
+            throw new Error.Failure("Upload error (maybe image size is too large):" + e.getMessage());
+        } catch (StickerPackInvalidException e) {
+            throw new Error.Failure("Invalid sticker pack: " + e.getMessage());
+        }
+    }
+
     private static void checkSendMessageResult(long timestamp, SendMessageResult result) throws DBusExecutionException {
         var error = ErrorUtils.getErrorMessageFromSendMessageResult(result);