]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/util/NumberVerificationUtils.java
Fix typo
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / util / NumberVerificationUtils.java
index 3d733c163e3e0de2e47a7df20d13e4996d24328a..f96e79d37ef409ded6605f857a6695eb22b747d4 100644 (file)
@@ -6,8 +6,10 @@ import org.asamk.signal.manager.api.NonNormalizedPhoneNumberException;
 import org.asamk.signal.manager.api.Pair;
 import org.asamk.signal.manager.api.PinLockedException;
 import org.asamk.signal.manager.api.RateLimitException;
+import org.asamk.signal.manager.api.VerificationMethodNotAvailableException;
 import org.asamk.signal.manager.helper.PinHelper;
-import org.whispersystems.signalservice.api.KbsPinData;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.whispersystems.signalservice.api.SignalServiceAccountManager;
 import org.whispersystems.signalservice.api.kbs.MasterKey;
 import org.whispersystems.signalservice.api.push.exceptions.NoSuchSessionException;
@@ -25,13 +27,15 @@ import java.util.function.Consumer;
 
 public class NumberVerificationUtils {
 
+    private static final Logger logger = LoggerFactory.getLogger(NumberVerificationUtils.class);
+
     public static String handleVerificationSession(
             SignalServiceAccountManager accountManager,
             String sessionId,
             Consumer<String> sessionIdSaver,
             boolean voiceVerification,
             String captcha
-    ) throws CaptchaRequiredException, IOException, RateLimitException {
+    ) throws CaptchaRequiredException, IOException, RateLimitException, VerificationMethodNotAvailableException {
         RegistrationSessionMetadataResponse sessionResponse;
         try {
             sessionResponse = getValidSession(accountManager, sessionId);
@@ -58,7 +62,9 @@ public class NumberVerificationUtils {
         final var nextAttempt = voiceVerification
                 ? sessionResponse.getBody().getNextCall()
                 : sessionResponse.getBody().getNextSms();
-        if (nextAttempt != null && nextAttempt > 0) {
+        if (nextAttempt == null) {
+            throw new VerificationMethodNotAvailableException();
+        } else if (nextAttempt > 0) {
             final var timestamp = sessionResponse.getHeaders().getTimestamp() + nextAttempt * 1000;
             throw new RateLimitException(timestamp);
         }
@@ -116,8 +122,7 @@ public class NumberVerificationUtils {
                 throw new PinLockedException(e.getTimeRemaining());
             }
 
-            KbsPinData registrationLockData;
-            registrationLockData = pinHelper.getRegistrationLockData(pin, e);
+            final var registrationLockData = pinHelper.getRegistrationLockData(pin, e);
             if (registrationLockData == null) {
                 throw e;
             }
@@ -145,7 +150,7 @@ public class NumberVerificationUtils {
 
     private static RegistrationSessionMetadataResponse requestValidSession(
             final SignalServiceAccountManager accountManager
-    ) throws NoSuchSessionException, IOException {
+    ) throws IOException {
         return Utils.handleResponseException(accountManager.createRegistrationSession(null, "", ""));
     }
 
@@ -155,6 +160,7 @@ public class NumberVerificationUtils {
         try {
             return validateSession(accountManager, sessionId);
         } catch (NoSuchSessionException e) {
+            logger.debug("No registration session, creating new one.");
             return requestValidSession(accountManager);
         }
     }