diff --git a/lib/src/main/java/org/asamk/signal/manager/api/BadRequestException.java b/lib/src/main/java/org/asamk/signal/manager/api/BadRequestException.java new file mode 100644 index 00000000..bffd9f11 --- /dev/null +++ b/lib/src/main/java/org/asamk/signal/manager/api/BadRequestException.java @@ -0,0 +1,19 @@ +package org.asamk.signal.manager.api; + +import org.signal.libsignal.net.BadRequestError; + +import java.io.IOException; + +public class BadRequestException extends IOException { + + private final BadRequestError error; + + public BadRequestException(final BadRequestError error) { + super(error.toString()); + this.error = error; + } + + public BadRequestError getError() { + return error; + } +} diff --git a/lib/src/main/java/org/asamk/signal/manager/util/Utils.java b/lib/src/main/java/org/asamk/signal/manager/util/Utils.java index 27ba298b..674b0ab1 100644 --- a/lib/src/main/java/org/asamk/signal/manager/util/Utils.java +++ b/lib/src/main/java/org/asamk/signal/manager/util/Utils.java @@ -1,5 +1,6 @@ package org.asamk.signal.manager.util; +import org.asamk.signal.manager.api.BadRequestException; import org.asamk.signal.manager.api.Pair; import org.signal.core.models.ServiceId; import org.signal.libsignal.net.BadRequestError; @@ -194,8 +195,8 @@ public class Utils { } } else if (result instanceof RequestResult.RetryableNetworkError e) { throw e.getNetworkError(); - } else if (result instanceof RequestResult.NonSuccess) { - throw new AssertionError(); + } else if (result instanceof RequestResult.NonSuccess e) { + throw new BadRequestException(e.getError()); } throw new IllegalStateException("Unexpected value: " + result); }