1 package org
.asamk
.signal
.commands
;
3 import net
.sourceforge
.argparse4j
.inf
.Namespace
;
4 import net
.sourceforge
.argparse4j
.inf
.Subparser
;
6 import org
.asamk
.signal
.commands
.exceptions
.CommandException
;
7 import org
.asamk
.signal
.commands
.exceptions
.UnexpectedErrorException
;
8 import org
.asamk
.signal
.manager
.Manager
;
9 import org
.asamk
.signal
.output
.OutputWriter
;
10 import org
.asamk
.signal
.util
.CommandUtil
;
12 import java
.io
.IOException
;
13 import java
.util
.Base64
;
15 import static org
.asamk
.signal
.util
.SendMessageResultUtils
.outputResult
;
17 public class SendPaymentNotificationCommand
implements JsonRpcLocalCommand
{
20 public String
getName() {
21 return "sendPaymentNotification";
25 public void attachToSubparser(final Subparser subparser
) {
26 subparser
.help("Send a payment notification.");
27 subparser
.addArgument("recipient").help("Specify the recipient's phone number.");
28 subparser
.addArgument("--receipt").required(true).help("The base64 encoded receipt blob.");
29 subparser
.addArgument("--note").help("Specify a note for the payment notification.");
33 public void handleCommand(
34 final Namespace ns
, final Manager m
, final OutputWriter outputWriter
35 ) throws CommandException
{
36 final var recipientString
= ns
.getString("recipient");
37 final var recipientIdentifier
= CommandUtil
.getSingleRecipientIdentifier(recipientString
, m
.getSelfNumber());
39 final var receiptString
= ns
.getString("receipt");
40 final var receipt
= Base64
.getDecoder().decode(receiptString
);
41 final var note
= ns
.getString("note");
44 final var results
= m
.sendPaymentNotificationMessage(receipt
, note
, recipientIdentifier
);
45 outputResult(outputWriter
, results
);
46 } catch (IOException e
) {
47 throw new UnexpectedErrorException("Failed to send message: " + e
.getMessage() + " (" + e
.getClass()
48 .getSimpleName() + ")", e
);