diff options
author | desperateCoder <echotodevnull@gmail.com> | 2023-04-09 18:41:00 +0300 |
---|---|---|
committer | desperateCoder <echotodevnull@gmail.com> | 2024-01-03 16:12:53 +0300 |
commit | 6945c197e0656d45f61eaf75be427bdb00d352c0 (patch) | |
tree | 47410b14fb51c0dea57cf062824b8320d94e150d /app/src/main/java/it/niedermann/nextcloud/deck/remote | |
parent | dbba1654ad6c61288251d63a08392ccd54fca789 (diff) |
enhance exception on failed calls
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/remote')
-rw-r--r-- | app/src/main/java/it/niedermann/nextcloud/deck/remote/api/RequestHelper.java | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/RequestHelper.java b/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/RequestHelper.java index 6ed3cfb28..9d70f56b5 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/RequestHelper.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/RequestHelper.java @@ -6,6 +6,7 @@ import com.nextcloud.android.sso.exceptions.NextcloudHttpRequestFailedException; import it.niedermann.nextcloud.deck.DeckLog; import it.niedermann.nextcloud.deck.util.ExecutorServiceProvider; +import okhttp3.Request; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; @@ -47,11 +48,30 @@ public class RequestHelper { callback.fillAccountIDs(responseObject); callback.onResponseWithHeaders(responseObject, response.headers()); } else { - onFailure(call, new NextcloudHttpRequestFailedException(response.code(), new RuntimeException("HTTP StatusCode wasn't 2xx"))); + + onFailure(call, new NextcloudHttpRequestFailedException(response.code(), buildCause(call, response))); } }); } + private RuntimeException buildCause(Call<T> call, Response<T> response){ + Request request = call.request(); + String url = request.url().redact(); + String method = request.method(); + int code = response.code(); + String responseBody = "<empty>"; + try ( var body = response.errorBody()) { + if (body != null) { + responseBody = body.string(); + } + } catch (Exception e) { + responseBody = "<unable to build response body: "+e.getMessage()+">"; + } + return new RuntimeException("HTTP StatusCode wasn't 2xx:\n" + + "Got [HTTP " + code + "] for Call [" + method + " " + url + "] with Message:\n" + + "[" + responseBody + "]"); + } + @Override public void onFailure(Call<T> call, Throwable t) { ExecutorServiceProvider.getLinkedBlockingQueueExecutor().submit( () -> { |