Несколько Api запросов с использованием RxJava и Retrofit
Такой вот вопрос. Мне нужно сделать несколько Api запросов с использованием Retrotit и RxJava. В первом запросе я получаю список из 20 фильмов. Мне нужно выводить список фильмов и инфу под каждым фильмом на экран. Чтобы получить инфу об фильме мне нужно сделать второй Api запрос передав туда id фильма и в ответ я получу один объект с инфой о фильме, а мне нужно получить 20 таких объектов с инфой для каждого фильма. Проблема в следующем, как это сделать с RxJava чтоб в репозитории я скомбинировал два запроса и вернул список из 20 фильмов с инфой для каждого фильма?
Мой репозиторий
class MoviesRepositoryImpl(
private val schedulersIO: Scheduler,
private val moviesApi: MoviesApi,
private val moviesApiMapper: MoviesApiMapper
) : MoviesRepository {
fun getPopularMovies(): Observable<PopularMoviesApi> {
return moviesApi.getPopularMovies()
.subscribeOn(schedulersIO)
}
private fun getMovieDetails(movieId: Int): Single<MovieDetailsModelApi> {
return moviesApi.getMoviesDetails(movieId)
.subscribeOn(schedulersIO)
}
В этом репозитории нужно получить список из 20ти фильмов в первом запросе и список из 20ти объектов с инфой для каждого фильма, затем замапить эти данные и вернуть список фильмов с инфой
Ответы (1 шт):
api.getMovies() // Get list of movies
.flatMapIterable { it } // Converts list of movies into an Observable which emits every item in the list
.flatMap { movie -> api.getMovieInfo(movie.id) } // Get movie info by movie id
.toList() // Convert to list of movie info