Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordesperateCoder <echotodevnull@gmail.com>2020-04-28 10:28:14 +0300
committerdesperateCoder <echotodevnull@gmail.com>2020-04-28 10:28:24 +0300
commit531624bb2d1e1007c626594776b6bb152bc2436c (patch)
tree4781b2d3edd4d8e688f84d4a43b8e01a563051d6 /app/src/main/java/it/niedermann/nextcloud/deck/exceptions
parentfd750835e3d63ae91e0c4a6ad7c87b1dcd099517 (diff)
#429: fixed duplicate file uploads
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/exceptions')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/exceptions/HandledServerErrors.java67
1 files changed, 67 insertions, 0 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/exceptions/HandledServerErrors.java b/app/src/main/java/it/niedermann/nextcloud/deck/exceptions/HandledServerErrors.java
new file mode 100644
index 000000000..38a63d2c1
--- /dev/null
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/exceptions/HandledServerErrors.java
@@ -0,0 +1,67 @@
+package it.niedermann.nextcloud.deck.exceptions;
+
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.google.gson.JsonSyntaxException;
+import com.nextcloud.android.sso.exceptions.NextcloudHttpRequestFailedException;
+
+public enum HandledServerErrors {
+ UNKNOWN(1337, "hopefully won't occurr"),
+ ATTACHMENTS_FILE_ALREADY_EXISTS(409, "File already exists."),
+ ;
+
+ private int status;
+ private String message;
+
+ HandledServerErrors(int status, String message) {
+ this.status = status;
+ this.message = message;
+ }
+
+ public static HandledServerErrors fromThrowable(Throwable throwable) {
+ if (throwable instanceof NextcloudHttpRequestFailedException) {
+ NextcloudHttpRequestFailedException requestFailedException = (NextcloudHttpRequestFailedException) throwable;
+ if (requestFailedException.getCause() != null) {
+ String errorString = requestFailedException.getCause().getMessage();
+ try {
+ JsonElement jsonElement = JsonParser.parseString(errorString);
+ if (jsonElement.isJsonObject()){
+ ServerError error = new ServerError();
+ error.status = requestFailedException.getStatusCode();
+ JsonObject errorObj = jsonElement.getAsJsonObject();
+ if (errorObj.has("message")){
+ error.message = errorObj.get("message").getAsString();
+ }
+ return findByServerError(error);
+ }
+ } catch (JsonSyntaxException e){
+ return HandledServerErrors.UNKNOWN;
+ }
+ }
+ }
+ return HandledServerErrors.UNKNOWN;
+ }
+
+ private static HandledServerErrors findByServerError(ServerError error) {
+ for (HandledServerErrors value : HandledServerErrors.values()) {
+ if (value.status == error.status && value.message.equals(error.message)){
+ return value;
+ }
+ }
+ return HandledServerErrors.UNKNOWN;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public int getStatus() {
+ return status;
+ }
+
+ private static class ServerError {
+ private int status;
+ private String message;
+ }
+}