X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/ceafe96e81150991e538bf6f446124ecc15f149f..06e93b84da2718c31111e820cd35a3354f22bae2:/src/main/java/org/asamk/signal/util/ErrorUtils.java diff --git a/src/main/java/org/asamk/signal/util/ErrorUtils.java b/src/main/java/org/asamk/signal/util/ErrorUtils.java deleted file mode 100644 index 3ca73163..00000000 --- a/src/main/java/org/asamk/signal/util/ErrorUtils.java +++ /dev/null @@ -1,96 +0,0 @@ -package org.asamk.signal.util; - -import org.asamk.signal.commands.exceptions.CommandException; -import org.asamk.signal.commands.exceptions.IOErrorException; -import org.asamk.signal.manager.api.ProofRequiredException; -import org.asamk.signal.manager.api.RecipientIdentifier; -import org.asamk.signal.manager.api.SendMessageResult; - -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.stream.Collectors; - -public class ErrorUtils { - - private ErrorUtils() { - } - - public static void handleSendMessageResults( - Map> mapResults - ) throws CommandException { - var errors = getErrorMessagesFromSendMessageResults(mapResults); - handleSendMessageResultErrors(errors); - } - - public static void handleSendMessageResults( - Collection results - ) throws CommandException { - var errors = getErrorMessagesFromSendMessageResults(results); - handleSendMessageResultErrors(errors); - } - - public static List getErrorMessagesFromSendMessageResults(final Map> mapResults) { - return mapResults.entrySet() - .stream() - .flatMap(entry -> entry.getValue() - .stream() - .map(ErrorUtils::getErrorMessageFromSendMessageResult) - .filter(Objects::nonNull) - .map(error -> entry.getKey().getIdentifier() + ": " + error)) - .collect(Collectors.toList()); - } - - public static List getErrorMessagesFromSendMessageResults(Collection results) { - return results.stream() - .map(ErrorUtils::getErrorMessageFromSendMessageResult) - .filter(Objects::nonNull) - .collect(Collectors.toList()); - } - - public static String getErrorMessageFromSendMessageResult(SendMessageResult result) { - var identifier = result.address().getLegacyIdentifier(); - if (result.proofRequiredFailure() != null) { - final var failure = result.proofRequiredFailure(); - return String.format( - "CAPTCHA proof required for sending to \"%s\", available options \"%s\" with challenge token \"%s\", or wait \"%d\" seconds.\n" - + ( - failure.getOptions().contains(ProofRequiredException.Option.RECAPTCHA) - ? """ - To get the captcha token, go to https://signalcaptchas.org/challenge/generate.html - Check the developer tools (F12) console for a failed redirect to signalcaptcha:// - Everything after signalcaptcha:// is the captcha token. - Use the following command to submit the captcha token: - signal-cli submitRateLimitChallenge --challenge CHALLENGE_TOKEN --captcha CAPTCHA_TOKEN""" - : "" - ), - identifier, - failure.getOptions() - .stream() - .map(ProofRequiredException.Option::toString) - .collect(Collectors.joining(", ")), - failure.getToken(), - failure.getRetryAfterSeconds()); - } else if (result.isNetworkFailure()) { - return String.format("Network failure for \"%s\"", identifier); - } else if (result.isUnregisteredFailure()) { - return String.format("Unregistered user \"%s\"", identifier); - } else if (result.isIdentityFailure()) { - return String.format("Untrusted Identity for \"%s\"", identifier); - } - return null; - } - - private static void handleSendMessageResultErrors(List errors) throws CommandException { - if (errors.size() == 0) { - return; - } - var message = new StringBuilder(); - message.append("Failed to send (some) messages:\n"); - for (var error : errors) { - message.append(error).append("\n"); - } - throw new IOErrorException(message.toString(), null); - } -}