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
.IOErrorException
;
8 import org
.asamk
.signal
.commands
.exceptions
.UserErrorException
;
9 import org
.asamk
.signal
.manager
.Manager
;
10 import org
.asamk
.signal
.manager
.api
.CaptchaRejectedException
;
11 import org
.asamk
.signal
.output
.OutputWriter
;
13 import java
.io
.IOException
;
15 public class SubmitRateLimitChallengeCommand
implements JsonRpcLocalCommand
{
18 public String
getName() {
19 return "submitRateLimitChallenge";
23 public void attachToSubparser(final Subparser subparser
) {
25 "Submit a captcha challenge to lift the rate limit. This command should only be necessary when sending fails with a proof required error.");
26 subparser
.addArgument("--challenge")
28 .help("The challenge token taken from the proof required error.");
29 subparser
.addArgument("--captcha")
31 .help("The captcha token from the solved captcha on the signal website.");
35 public void handleCommand(final Namespace ns
, final Manager m
, OutputWriter outputWriter
) throws CommandException
{
36 final var challenge
= ns
.getString("challenge");
37 final var captcha
= ns
.getString("captcha");
40 m
.submitRateLimitRecaptchaChallenge(challenge
, captcha
);
41 } catch (IOException e
) {
42 throw new IOErrorException("Submit challenge error: " + e
.getMessage(), e
);
43 } catch (CaptchaRejectedException e
) {
44 throw new UserErrorException(
45 "Captcha rejected, it may be outdated, already used or solved from a different IP address.");