diff options
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/discovery/FyydPodcastSearcher.java')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/discovery/FyydPodcastSearcher.java | 41 |
1 files changed, 17 insertions, 24 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/discovery/FyydPodcastSearcher.java b/app/src/main/java/de/danoeh/antennapod/discovery/FyydPodcastSearcher.java index af0597a07..529a9e3d5 100644 --- a/app/src/main/java/de/danoeh/antennapod/discovery/FyydPodcastSearcher.java +++ b/app/src/main/java/de/danoeh/antennapod/discovery/FyydPodcastSearcher.java @@ -4,42 +4,35 @@ import de.danoeh.antennapod.core.service.download.AntennapodHttpClient; import de.mfietz.fyydlin.FyydClient; import de.mfietz.fyydlin.FyydResponse; import de.mfietz.fyydlin.SearchHit; +import io.reactivex.Single; +import io.reactivex.SingleOnSubscribe; import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.Disposable; -import io.reactivex.functions.Consumer; import io.reactivex.schedulers.Schedulers; import java.util.ArrayList; import java.util.List; public class FyydPodcastSearcher implements PodcastSearcher { - private final String query; private final FyydClient client = new FyydClient(AntennapodHttpClient.getHttpClient()); - public FyydPodcastSearcher(String query) { - this.query = query; - } + public Single<List<PodcastSearchResult>> search(String query) { + return Single.create((SingleOnSubscribe<List<PodcastSearchResult>>) subscriber -> { + FyydResponse response = client.searchPodcasts(query, 10) + .subscribeOn(Schedulers.io()) + .blockingGet(); - public Disposable search(Consumer<? super List<PodcastSearchResult>> successHandler, Consumer<? super Throwable> errorHandler) { - return client.searchPodcasts(query, 10) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(result -> { - ArrayList<PodcastSearchResult> results = processSearchResult(result); - successHandler.accept(results); - }, errorHandler); - } + ArrayList<PodcastSearchResult> searchResults = new ArrayList<>(); - private ArrayList<PodcastSearchResult> processSearchResult(FyydResponse response) { - ArrayList<PodcastSearchResult> searchResults = new ArrayList<>(); - - if (!response.getData().isEmpty()) { - for (SearchHit searchHit : response.getData()) { - PodcastSearchResult podcast = PodcastSearchResult.fromFyyd(searchHit); - searchResults.add(podcast); + if (!response.getData().isEmpty()) { + for (SearchHit searchHit : response.getData()) { + PodcastSearchResult podcast = PodcastSearchResult.fromFyyd(searchHit); + searchResults.add(podcast); + } } - } - return searchResults; + subscriber.onSuccess(searchResults); + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); } } |