diff --git a/src/main/java/org/asamk/signal/commands/GetAttachmentCommand.java b/src/main/java/org/asamk/signal/commands/GetAttachmentCommand.java index 36e12515..8af4af2d 100644 --- a/src/main/java/org/asamk/signal/commands/GetAttachmentCommand.java +++ b/src/main/java/org/asamk/signal/commands/GetAttachmentCommand.java @@ -5,12 +5,14 @@ import net.sourceforge.argparse4j.inf.Subparser; import org.asamk.signal.commands.exceptions.CommandException; import org.asamk.signal.commands.exceptions.UnexpectedErrorException; +import org.asamk.signal.commands.exceptions.UserErrorException; import org.asamk.signal.json.JsonAttachmentData; import org.asamk.signal.manager.Manager; import org.asamk.signal.output.JsonWriter; import org.asamk.signal.output.OutputWriter; import org.asamk.signal.output.PlainTextWriter; +import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Base64; @@ -25,7 +27,14 @@ public class GetAttachmentCommand implements JsonRpcLocalCommand { @Override public void attachToSubparser(final Subparser subparser) { subparser.addArgument("--id") + .required(true) .help("The ID of the attachment file."); + var mut = subparser.addMutuallyExclusiveGroup() + .required(true); + mut.addArgument("--recipient") + .help("Sender of the attachment"); + mut.addArgument("-g", "--group-id") + .help("Group in which the attachment was received"); } @Override @@ -44,10 +53,11 @@ public class GetAttachmentCommand implements JsonRpcLocalCommand { if (outputWriter instanceof PlainTextWriter writer) { writer.println(base64); - } - else if (outputWriter instanceof JsonWriter writer) { + } else if (outputWriter instanceof JsonWriter writer) { writer.write(new JsonAttachmentData(base64)); } + } catch (FileNotFoundException ex) { + throw new UserErrorException("Could not find attachment with ID: " + id); } catch (IOException ex) { throw new UnexpectedErrorException("An error occurred reading attachment: " + id, ex); } diff --git a/src/main/java/org/asamk/signal/json/JsonAttachmentData.java b/src/main/java/org/asamk/signal/json/JsonAttachmentData.java index a8af32d4..d017ef7b 100644 --- a/src/main/java/org/asamk/signal/json/JsonAttachmentData.java +++ b/src/main/java/org/asamk/signal/json/JsonAttachmentData.java @@ -1,3 +1,3 @@ package org.asamk.signal.json; -public record JsonAttachmentData(String dataBase64) {} +public record JsonAttachmentData(String data) {}