]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/api/ProofRequiredException.java
Remove libsignal-service from manager lib API
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / api / ProofRequiredException.java
diff --git a/lib/src/main/java/org/asamk/signal/manager/api/ProofRequiredException.java b/lib/src/main/java/org/asamk/signal/manager/api/ProofRequiredException.java
new file mode 100644 (file)
index 0000000..949dc4e
--- /dev/null
@@ -0,0 +1,44 @@
+package org.asamk.signal.manager.api;
+
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * Thrown when rate-limited by the server and proof of humanity is required to continue messaging.
+ */
+public class ProofRequiredException extends Exception {
+
+    private final String token;
+    private final Set<Option> options;
+    private final long retryAfterSeconds;
+
+    public ProofRequiredException(org.whispersystems.signalservice.api.push.exceptions.ProofRequiredException e) {
+        this.token = e.getToken();
+        this.options = e.getOptions().stream().map(Option::from).collect(Collectors.toSet());
+        this.retryAfterSeconds = e.getRetryAfterSeconds();
+    }
+
+    public String getToken() {
+        return token;
+    }
+
+    public Set<Option> getOptions() {
+        return options;
+    }
+
+    public long getRetryAfterSeconds() {
+        return retryAfterSeconds;
+    }
+
+    public enum Option {
+        RECAPTCHA,
+        PUSH_CHALLENGE;
+
+        static Option from(org.whispersystems.signalservice.api.push.exceptions.ProofRequiredException.Option option) {
+            return switch (option) {
+                case RECAPTCHA -> RECAPTCHA;
+                case PUSH_CHALLENGE -> PUSH_CHALLENGE;
+            };
+        }
+    }
+}