]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/util/NumberVerificationUtils.java
Update dependencies
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / util / NumberVerificationUtils.java
index 1c5aa41178dca9c678f5e12f867d4a5b5fd84905..921d7fc176e1563d325be43c7b1309eaee73d124 100644 (file)
@@ -10,11 +10,10 @@ import org.asamk.signal.manager.api.VerificationMethodNotAvailableException;
 import org.asamk.signal.manager.helper.PinHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.whispersystems.signalservice.api.NetworkResult;
 import org.whispersystems.signalservice.api.kbs.MasterKey;
+import org.whispersystems.signalservice.api.push.exceptions.ChallengeRequiredException;
 import org.whispersystems.signalservice.api.push.exceptions.NoSuchSessionException;
 import org.whispersystems.signalservice.api.push.exceptions.NonSuccessfulResponseCodeException;
-import org.whispersystems.signalservice.api.push.exceptions.PushChallengeRequiredException;
 import org.whispersystems.signalservice.api.push.exceptions.TokenNotAcceptedException;
 import org.whispersystems.signalservice.api.registration.RegistrationApi;
 import org.whispersystems.signalservice.internal.push.LockedException;
@@ -40,8 +39,7 @@ public class NumberVerificationUtils {
         RegistrationSessionMetadataResponse sessionResponse;
         try {
             sessionResponse = getValidSession(registrationApi, sessionId);
-        } catch (PushChallengeRequiredException |
-                 org.whispersystems.signalservice.api.push.exceptions.CaptchaRequiredException e) {
+        } catch (ChallengeRequiredException e) {
             if (captcha != null) {
                 sessionResponse = submitCaptcha(registrationApi, sessionId, captcha);
             } else {
@@ -49,38 +47,38 @@ public class NumberVerificationUtils {
             }
         }
 
-        sessionId = sessionResponse.getBody().getId();
+        sessionId = sessionResponse.getMetadata().getId();
         sessionIdSaver.accept(sessionId);
 
-        if (sessionResponse.getBody().getVerified()) {
+        if (sessionResponse.getMetadata().getVerified()) {
             return sessionId;
         }
 
-        if (sessionResponse.getBody().getAllowedToRequestCode()) {
+        if (sessionResponse.getMetadata().getAllowedToRequestCode()) {
             return sessionId;
         }
 
         final var nextAttempt = voiceVerification
-                ? sessionResponse.getBody().getNextCall()
-                : sessionResponse.getBody().getNextSms();
+                ? sessionResponse.getMetadata().getNextCall()
+                : sessionResponse.getMetadata().getNextSms();
         if (nextAttempt == null) {
             throw new VerificationMethodNotAvailableException();
         } else if (nextAttempt > 0) {
-            final var timestamp = sessionResponse.getHeaders().getTimestamp() + nextAttempt * 1000;
+            final var timestamp = sessionResponse.getClientReceivedAtMilliseconds() + nextAttempt * 1000;
             throw new RateLimitException(timestamp);
         }
 
-        final var nextVerificationAttempt = sessionResponse.getBody().getNextVerificationAttempt();
+        final var nextVerificationAttempt = sessionResponse.getMetadata().getNextVerificationAttempt();
         if (nextVerificationAttempt != null && nextVerificationAttempt > 0) {
-            final var timestamp = sessionResponse.getHeaders().getTimestamp() + nextVerificationAttempt * 1000;
+            final var timestamp = sessionResponse.getClientReceivedAtMilliseconds() + nextVerificationAttempt * 1000;
             throw new CaptchaRequiredException(timestamp);
         }
 
-        if (sessionResponse.getBody().getRequestedInformation().contains("captcha")) {
+        if (sessionResponse.getMetadata().getRequestedInformation().contains("captcha")) {
             if (captcha != null) {
                 sessionResponse = submitCaptcha(registrationApi, sessionId, captcha);
             }
-            if (!sessionResponse.getBody().getAllowedToRequestCode()) {
+            if (!sessionResponse.getMetadata().getAllowedToRequestCode()) {
                 throw new CaptchaRequiredException("Captcha Required");
             }
         }
@@ -89,24 +87,18 @@ public class NumberVerificationUtils {
     }
 
     public static void requestVerificationCode(
-            RegistrationApi registrationApi, String sessionId, boolean voiceVerification
+            RegistrationApi registrationApi,
+            String sessionId,
+            boolean voiceVerification
     ) throws IOException, CaptchaRequiredException, NonNormalizedPhoneNumberException {
-        final NetworkResult<RegistrationSessionMetadataResponse> response;
         final var locale = Utils.getDefaultLocale(Locale.US);
-        if (voiceVerification) {
-            response = registrationApi.requestSmsVerificationCode(sessionId,
-                    locale,
-                    false,
-                    VerificationCodeTransport.VOICE);
-        } else {
-            response = registrationApi.requestSmsVerificationCode(sessionId,
-                    locale,
-                    false,
-                    VerificationCodeTransport.SMS);
-        }
+        final var response = registrationApi.requestSmsVerificationCode(sessionId,
+                locale,
+                false,
+                voiceVerification ? VerificationCodeTransport.VOICE : VerificationCodeTransport.SMS);
         try {
             Utils.handleResponseException(response);
-        } catch (org.whispersystems.signalservice.api.push.exceptions.CaptchaRequiredException e) {
+        } catch (ChallengeRequiredException e) {
             throw new CaptchaRequiredException(e.getMessage(), e);
         } catch (org.whispersystems.signalservice.api.push.exceptions.NonNormalizedPhoneNumberException e) {
             throw new NonNormalizedPhoneNumberException("Phone number is not normalized ("
@@ -117,7 +109,11 @@ public class NumberVerificationUtils {
     }
 
     public static Pair<VerifyAccountResponse, MasterKey> verifyNumber(
-            String sessionId, String verificationCode, String pin, PinHelper pinHelper, Verifier verifier
+            String sessionId,
+            String verificationCode,
+            String pin,
+            PinHelper pinHelper,
+            Verifier verifier
     ) throws IOException, PinLockedException, IncorrectPinException {
         verificationCode = verificationCode.replace("-", "");
         try {
@@ -147,7 +143,8 @@ public class NumberVerificationUtils {
     }
 
     private static RegistrationSessionMetadataResponse validateSession(
-            final RegistrationApi registrationApi, final String sessionId
+            final RegistrationApi registrationApi,
+            final String sessionId
     ) throws IOException {
         if (sessionId == null || sessionId.isEmpty()) {
             throw new NoSuchSessionException();
@@ -162,7 +159,8 @@ public class NumberVerificationUtils {
     }
 
     private static RegistrationSessionMetadataResponse getValidSession(
-            final RegistrationApi registrationApi, final String sessionId
+            final RegistrationApi registrationApi,
+            final String sessionId
     ) throws IOException {
         try {
             return validateSession(registrationApi, sessionId);
@@ -173,17 +171,17 @@ public class NumberVerificationUtils {
     }
 
     private static RegistrationSessionMetadataResponse submitCaptcha(
-            RegistrationApi registrationApi, String sessionId, String captcha
+            RegistrationApi registrationApi,
+            String sessionId,
+            String captcha
     ) throws IOException, CaptchaRequiredException {
         captcha = captcha == null ? null : captcha.replace("signalcaptcha://", "");
         try {
             return Utils.handleResponseException(registrationApi.submitCaptchaToken(sessionId, captcha));
-        } catch (PushChallengeRequiredException |
-                 org.whispersystems.signalservice.api.push.exceptions.CaptchaRequiredException |
-                 TokenNotAcceptedException _e) {
+        } catch (ChallengeRequiredException | TokenNotAcceptedException _e) {
             throw new CaptchaRequiredException("Captcha not accepted");
         } catch (NonSuccessfulResponseCodeException e) {
-            if (e.getCode() == 400) {
+            if (e.code == 400) {
                 throw new CaptchaRequiredException("Captcha has invalid format");
             }
             throw e;
@@ -193,7 +191,9 @@ public class NumberVerificationUtils {
     public interface Verifier {
 
         VerifyAccountResponse verify(
-                String sessionId, String verificationCode, String registrationLock
+                String sessionId,
+                String verificationCode,
+                String registrationLock
         ) throws IOException;
     }
 }