package com.esoxjem.movieguide.details;
import com.esoxjem.movieguide.Api;
import com.esoxjem.movieguide.Review;
import com.esoxjem.movieguide.Video;
import com.esoxjem.movieguide.network.RequestGenerator;
import com.esoxjem.movieguide.network.RequestHandler;
import org.json.JSONException;
import java.io.IOException;
import java.util.List;
import okhttp3.Request;
import rx.Observable;
/**
* @author arun
*/
class MovieDetailsInteractorImpl implements MovieDetailsInteractor
{
private RequestHandler requestHandler;
MovieDetailsInteractorImpl(RequestHandler requestHandler)
{
this.requestHandler = requestHandler;
}
@Override
public Observable<List<Video>> getTrailers(final String id)
{
return Observable.fromCallable(() -> getVideoList(id));
}
private List<Video> getVideoList(String id) throws IOException, JSONException
{
String url = String.format(Api.GET_TRAILERS, id);
Request request = RequestGenerator.get(url);
String body = requestHandler.request(request);
return MovieDetailsParser.parseTrailers(body);
}
private List<Review> getReviewList(String id) throws IOException, JSONException
{
String url = String.format(Api.GET_REVIEWS, id);
Request request = RequestGenerator.get(url);
String body = requestHandler.request(request);
return MovieDetailsParser.parseReviews(body);
}
@Override
public Observable<List<Review>> getReviews(final String id)
{
return Observable.fromCallable(() -> getReviewList(id));
}
}