diff options
author | Stefan Niedermann <info@niedermann.it> | 2024-01-16 12:12:18 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2024-01-16 12:12:18 +0300 |
commit | d2755483160ff4da85adbb7e9a6981556d6b8080 (patch) | |
tree | b97921519b8aa0f90a0ef98d8ecf9415df245636 /app/src/main/java/it/niedermann/nextcloud/deck/remote | |
parent | 420a62a0630b6957d843ce0cb0f61cd300732a06 (diff) |
chore(sync): Minor code refactoring
Signed-off-by: Stefan Niedermann <info@niedermann.it>
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/ApiProvider.java | 5 | ||||
-rw-r--r-- | app/src/main/java/it/niedermann/nextcloud/deck/remote/api/RequestHelper.java | 39 |
2 files changed, 24 insertions, 20 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/ApiProvider.java b/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/ApiProvider.java index cad3457a8..cee04e2dc 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/ApiProvider.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/ApiProvider.java @@ -36,6 +36,11 @@ public class ApiProvider { } } + @NonNull + public Context getContext() { + return this.context; + } + public DeckAPI getDeckAPI() { return deckAPI; } 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 d760f5a79..4106c73a3 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 @@ -1,9 +1,13 @@ package it.niedermann.nextcloud.deck.remote.api; +import android.content.Context; + import androidx.annotation.NonNull; import com.nextcloud.android.sso.exceptions.NextcloudHttpRequestFailedException; +import java.util.function.Supplier; + import it.niedermann.nextcloud.deck.DeckLog; import it.niedermann.nextcloud.deck.util.ExecutorServiceProvider; import okhttp3.Request; @@ -14,45 +18,40 @@ import retrofit2.Response; public class RequestHelper { -// static { -// RxJavaPlugins.setErrorHandler(DeckLog::logError); -// } - - public static <T> void request(@NonNull final ApiProvider provider, @NonNull final ObservableProvider<T> call, @NonNull final ResponseCallback<T> callback) { + public static <T> void request(@NonNull final ApiProvider provider, + @NonNull final Supplier<Call<T>> callProvider, + @NonNull final ResponseCallback<T> callback) { if (provider.getDeckAPI() == null) { provider.initSsoApi(callback::onError); } - final ResponseConsumer<T> cb = new ResponseConsumer<>(callback); - ExecutorServiceProvider.getLinkedBlockingQueueExecutor().submit(() -> call.getObservableFromCall().enqueue(cb)); -// .subscribeOn(Schedulers.from(ExecutorServiceProvider.getExecutorService())) -// .subscribe(cb, cb.getExceptionConsumer()); - } - - public interface ObservableProvider<T> { - Call<T> getObservableFromCall(); + final ResponseConsumer<T> cb = new ResponseConsumer<>(provider.getContext(), callback); + ExecutorServiceProvider.getLinkedBlockingQueueExecutor().submit(() -> callProvider.get().enqueue(cb)); } private static class ResponseConsumer<T> implements Callback<T> { @NonNull + private final Context context; + @NonNull private final ResponseCallback<T> callback; - private ResponseConsumer(@NonNull ResponseCallback<T> callback) { + private ResponseConsumer(@NonNull Context context, @NonNull ResponseCallback<T> callback) { + this.context = context; this.callback = callback; } @Override public void onResponse(@NonNull Call<T> call, Response<T> response) { - if(response.isSuccessful()) { + if (response.isSuccessful()) { T responseObject = response.body(); callback.fillAccountIDs(responseObject); callback.onResponseWithHeaders(responseObject, response.headers()); } else { - onFailure(call, new NextcloudHttpRequestFailedException(response.code(), buildCause(response))); + onFailure(call, new NextcloudHttpRequestFailedException(context, response.code(), buildCause(response))); } } - private RuntimeException buildCause(Response<T> response){ + private RuntimeException buildCause(Response<T> response) { Request request = response.raw().request(); String url = request.url().toString(); String method = request.method(); @@ -60,10 +59,10 @@ public class RequestHelper { String responseBody = "<empty>"; try (ResponseBody body = response.errorBody()) { if (body != null) { - responseBody = response.errorBody().string() ; + responseBody = response.errorBody().string(); } } catch (Exception e) { - responseBody = "<unable to build response body: "+e.getMessage()+">"; + 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" + @@ -71,7 +70,7 @@ public class RequestHelper { } @Override - public void onFailure(@NonNull Call<T> call, Throwable t) { + public void onFailure(@NonNull Call<T> call, @NonNull Throwable t) { DeckLog.logError(t); callback.onError(ServerCommunicationErrorHandler.translateError(t)); } |