]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/api/ProofRequiredException.java
277406cbc616defa30beef1b0693ebcbfcda0482
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / api / ProofRequiredException.java
1 package org.asamk.signal.manager.api;
2
3 import java.util.Set;
4 import java.util.stream.Collectors;
5
6 /**
7 * Thrown when rate-limited by the server and proof of humanity is required to continue messaging.
8 */
9 public class ProofRequiredException extends Exception {
10
11 private final String token;
12 private final Set<Option> options;
13 private final long retryAfterSeconds;
14
15 public ProofRequiredException(org.whispersystems.signalservice.api.push.exceptions.ProofRequiredException e) {
16 this.token = e.getToken();
17 this.options = e.getOptions().stream().map(Option::from).collect(Collectors.toSet());
18 this.retryAfterSeconds = e.getRetryAfterSeconds();
19 }
20
21 public String getToken() {
22 return token;
23 }
24
25 public Set<Option> getOptions() {
26 return options;
27 }
28
29 public long getRetryAfterSeconds() {
30 return retryAfterSeconds;
31 }
32
33 public enum Option {
34 CAPTCHA,
35 PUSH_CHALLENGE;
36
37 static Option from(org.whispersystems.signalservice.api.push.exceptions.ProofRequiredException.Option option) {
38 return switch (option) {
39 case RECAPTCHA -> CAPTCHA;
40 case CAPTCHA -> CAPTCHA;
41 case PUSH_CHALLENGE -> PUSH_CHALLENGE;
42 };
43 }
44 }
45 }