]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/commands/AddStickerPackCommand.java
Reformat files
[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 static final 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,
40 final Manager m,
41 final OutputWriter outputWriter
42 ) throws CommandException {
43 final var uris = ns.<String>getList("uri");
44 for (final var uri : uris) {
45 final URI stickerUri;
46 try {
47 stickerUri = new URI(uri);
48 } catch (URISyntaxException e) {
49 throw new UserErrorException("Sticker pack uri has invalid format: " + e.getMessage());
50 }
51
52 try {
53 var stickerPackUrl = StickerPackUrl.fromUri(stickerUri);
54 m.installStickerPack(stickerPackUrl);
55 } catch (IOException e) {
56 logger.error("Install sticker pack failed: {}", e.getMessage());
57 throw new IOErrorException("Install sticker pack failed", e);
58 } catch (StickerPackUrl.InvalidStickerPackLinkException e) {
59 logger.error("Invalid sticker pack link");
60 throw new UserErrorException("Invalid sticker pack link", e);
61 }
62 }
63 }
64 }