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.