]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/commands/AddStickerPackCommand.java
Add --quote-attachment paramter to send command
[signal-cli] / src / main / java / org / asamk / signal / commands / AddStickerPackCommand.java
1 package org.asamk.signal.commands;
2
3 import net.sourceforge.argparse4j.inf.Namespace;
4 import net.sourceforge.argparse4j.inf.Subparser;
5
6 import org.asamk.signal.commands.exceptions.CommandException;
7 import org.asamk.signal.commands.exceptions.IOErrorException;
8 import org.asamk.signal.commands.exceptions.UserErrorException;
9 import org.asamk.signal.manager.Manager;
10 import org.asamk.signal.manager.api.StickerPackUrl;
11 import org.asamk.signal.output.OutputWriter;
12 import org.slf4j.Logger;
13 import org.slf4j.LoggerFactory;
14
15 import java.io.IOException;
16 import java.net.URI;
17 import java.net.URISyntaxException;
18
19 public class AddStickerPackCommand implements JsonRpcLocalCommand {
20
21 private final static Logger logger = LoggerFactory.getLogger(AddStickerPackCommand.class);
22
23 @Override
24 public String getName() {
25 return "addStickerPack";
26 }
27
28 @Override
29 public void attachToSubparser(final Subparser subparser) {
30 subparser.help("Install a sticker pack for this account.");
31 subparser.addArgument("--uri")
32 .required(true)
33 .nargs("+")
34 .help("Specify the uri of the sticker pack. (e.g. https://signal.art/addstickers/#pack_id=XXX&pack_key=XXX)");
35 }
36
37 @Override
38 public void handleCommand(
39 final Namespace ns, final Manager m, final OutputWriter outputWriter
40 ) throws CommandException {
41 final var uris = ns.<String>getList("uri");
42 for (final var uri : uris) {
43 final URI stickerUri;
44 try {
45 stickerUri = new URI(uri);
46 } catch (URISyntaxException e) {
47 throw new UserErrorException("Sticker pack uri has invalid format: " + e.getMessage());
48 }
49
50 try {
51 var stickerPackUrl = StickerPackUrl.fromUri(stickerUri);
52 m.installStickerPack(stickerPackUrl);
53 } catch (IOException e) {
54 logger.error("Install sticker pack failed: {}", e.getMessage());
55 throw new IOErrorException("Install sticker pack failed", e);
56 } catch (StickerPackUrl.InvalidStickerPackLinkException e) {
57 logger.error("Invalid sticker pack link");
58 throw new UserErrorException("Invalid sticker pack link", e);
59 }
60 }
61 }
62 }