diff --git a/Simperium/src/main/java/com/simperium/android/CredentialsActivity.java b/Simperium/src/main/java/com/simperium/android/CredentialsActivity.java index a053b9c..5b8996c 100644 --- a/Simperium/src/main/java/com/simperium/android/CredentialsActivity.java +++ b/Simperium/src/main/java/com/simperium/android/CredentialsActivity.java @@ -78,6 +78,9 @@ public void run() { case COMPROMISED_PASSWORD: showCompromisedPasswordDialog(); break; + case TOO_MANY_REQUESTS: + showDialogError(getString(R.string.simperium_too_many_attempts)); + break; case INVALID_ACCOUNT: default: showDialogError(getString( diff --git a/Simperium/src/main/java/com/simperium/client/AuthException.java b/Simperium/src/main/java/com/simperium/client/AuthException.java index cba660c..d32f818 100644 --- a/Simperium/src/main/java/com/simperium/client/AuthException.java +++ b/Simperium/src/main/java/com/simperium/client/AuthException.java @@ -10,6 +10,8 @@ public class AuthException extends SimperiumException { static public final String EXISTING_USER_FAILURE_MESSAGE = "Account already exists"; static public final String UNVERIFIED_ACCOUNT_MESSAGE = "Account verification required"; static public final String COMPROMISED_PASSWORD_MESSAGE = "Password has been compromised"; + static public final String TOO_MANY_REQUESTS_MESSAGE = "Too many log in attempts"; + static public final String COMPROMISED_PASSWORD_BODY = "compromised password"; static public final String VERIFICATION_REQUIRED_BODY = "verification required"; @@ -18,7 +20,7 @@ public class AuthException extends SimperiumException { public final FailureType failureType; public enum FailureType { - INVALID_ACCOUNT, EXISTING_ACCOUNT, COMPROMISED_PASSWORD, UNVERIFIED_ACCOUNT + INVALID_ACCOUNT, EXISTING_ACCOUNT, COMPROMISED_PASSWORD, UNVERIFIED_ACCOUNT, TOO_MANY_REQUESTS } public AuthException(FailureType code, String message){ @@ -44,6 +46,8 @@ public static AuthException exceptionForStatusCode(int statusCode, Throwable cau if (statusCode == 409) { return new AuthException(FailureType.EXISTING_ACCOUNT, EXISTING_USER_FAILURE_MESSAGE, cause); + } else if (statusCode == 429) { + return new AuthException(FailureType.TOO_MANY_REQUESTS, TOO_MANY_REQUESTS_MESSAGE, cause); } else if (statusCode == 403 && Objects.equals(message, VERIFICATION_REQUIRED_BODY)) { return new AuthException(FailureType.UNVERIFIED_ACCOUNT, UNVERIFIED_ACCOUNT_MESSAGE, cause); } else if (statusCode == 401 && Objects.equals(message, COMPROMISED_PASSWORD_BODY)) { diff --git a/Simperium/src/main/res/values/strings.xml b/Simperium/src/main/res/values/strings.xml index 883d2e8..f2d8a72 100644 --- a/Simperium/src/main/res/values/strings.xml +++ b/Simperium/src/main/res/values/strings.xml @@ -43,4 +43,5 @@ Account Verification Required You must verify your email before logging in to your account. Okay + Too many log in attempts. Try again later.