Skip to content

Instantly share code, notes, and snippets.

@captswag
Created November 5, 2017 05:42
Show Gist options
  • Save captswag/ed49bc58159f027026d153dadc6eac0e to your computer and use it in GitHub Desktop.
Save captswag/ed49bc58159f027026d153dadc6eac0e to your computer and use it in GitHub Desktop.
void getNowPlayingMovies() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BuildConfig.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
TmdbInterface tmdbInterface = retrofit.create(TmdbInterface.class);
Observable<HashMap<Integer, String>> genresListResponseObservable =
tmdbInterface.getGenresList(BuildConfig.API_KEY)
.map(new Function<GenresListResponse, HashMap<Integer, String>>() {
@Override
public HashMap<Integer, String> apply(GenresListResponse genresListResponse) throws Exception {
HashMap<Integer, String> genresMap = new HashMap<>();
for (Genre genre : genresListResponse.getGenres()) {
genresMap.put(genre.getId(), genre.getName());
}
return genresMap;
}
})
.subscribeOn(Schedulers.newThread())
.observeOn(Schedulers.newThread());
Observable<NowPlayingMoviesListResponse> nowPlayingMoviesListResponseObservable =
tmdbInterface.getNowPlayingMovies(BuildConfig.API_KEY)
.subscribeOn(Schedulers.newThread())
.observeOn(Schedulers.newThread());
Observable.zip(genresListResponseObservable, nowPlayingMoviesListResponseObservable,
new BiFunction<HashMap<Integer, String>, NowPlayingMoviesListResponse, NowPlayingMoviesListResponse>() {
@Override
public NowPlayingMoviesListResponse apply(HashMap<Integer, String> genresMap, NowPlayingMoviesListResponse nowPlayingMoviesListResponse) throws Exception {
for (Result nowPlayingMovie : nowPlayingMoviesListResponse.getResults()) {
StringBuilder genre = new StringBuilder();
for (int i = 0; i < nowPlayingMovie.getGenreIds().size(); i++) {
Integer id = nowPlayingMovie.getGenreIds().get(i);
if (i == 0) {
genre.append(genresMap.get(id));
} else {
genre.append(", ").append(genresMap.get(id).toLowerCase());
}
}
nowPlayingMovie.setGenre(genre.toString());
}
return nowPlayingMoviesListResponse;
}
}).observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.newThread())
.subscribe(new Observer<NowPlayingMoviesListResponse>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(NowPlayingMoviesListResponse nowPlayingMoviesListResponse) {
mNowPlayingMoviesListView
.addNowPlayingMoviesToList(nowPlayingMoviesListResponse.getResults());
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment