]>
nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/util/ErrorUtils.java
1 package org
.asamk
.signal
.util
;
3 import org
.asamk
.signal
.commands
.exceptions
.CommandException
;
4 import org
.asamk
.signal
.commands
.exceptions
.IOErrorException
;
5 import org
.slf4j
.Logger
;
6 import org
.slf4j
.LoggerFactory
;
7 import org
.whispersystems
.signalservice
.api
.messages
.SendMessageResult
;
8 import org
.whispersystems
.signalservice
.api
.push
.exceptions
.ProofRequiredException
;
10 import java
.util
.ArrayList
;
11 import java
.util
.List
;
12 import java
.util
.stream
.Collectors
;
14 import static org
.asamk
.signal
.util
.Util
.getLegacyIdentifier
;
16 public class ErrorUtils
{
18 private final static Logger logger
= LoggerFactory
.getLogger(ErrorUtils
.class);
20 private ErrorUtils() {
23 public static void handleSendMessageResults(
24 List
<SendMessageResult
> results
25 ) throws CommandException
{
26 var errors
= getErrorMessagesFromSendMessageResults(results
);
27 handleSendMessageResultErrors(errors
);
30 public static List
<String
> getErrorMessagesFromSendMessageResults(List
<SendMessageResult
> results
) {
31 var errors
= new ArrayList
<String
>();
32 for (var result
: results
) {
33 var error
= getErrorMessageFromSendMessageResult(result
);
42 public static String
getErrorMessageFromSendMessageResult(SendMessageResult result
) {
43 var identifier
= getLegacyIdentifier(result
.getAddress());
44 if (result
.isNetworkFailure()) {
45 return String
.format("Network failure for \"%s\"", identifier
);
46 } else if (result
.isUnregisteredFailure()) {
47 return String
.format("Unregistered user \"%s\"", identifier
);
48 } else if (result
.getIdentityFailure() != null) {
49 return String
.format("Untrusted Identity for \"%s\"", identifier
);
50 } else if (result
.getProofRequiredFailure() != null) {
51 final var failure
= result
.getProofRequiredFailure();
53 "CAPTCHA proof required for sending to \"%s\", available options \"%s\" with token \"%s\", or wait \"%d\" seconds",
57 .map(ProofRequiredException
.Option
::toString
)
58 .collect(Collectors
.joining(", ")),
60 failure
.getRetryAfterSeconds());
65 private static void handleSendMessageResultErrors(List
<String
> errors
) throws CommandException
{
66 if (errors
.size() == 0) {
69 var message
= new StringBuilder();
70 message
.append("Failed to send (some) messages:\n");
71 for (var error
: errors
) {
72 message
.append(error
).append("\n");
74 throw new IOErrorException(message
.toString());