package com.sweetzpot.stravazpot.stream.request; import com.sweetzpot.stravazpot.stream.api.StreamAPI; import com.sweetzpot.stravazpot.stream.model.Resolution; import com.sweetzpot.stravazpot.stream.model.SeriesType; import com.sweetzpot.stravazpot.stream.model.Stream; import com.sweetzpot.stravazpot.stream.model.StreamType; import com.sweetzpot.stravazpot.stream.rest.StreamRest; import java.util.List; import retrofit2.Call; public class GetActivityStreamsRequest { private final int activityID; private final StreamRest restService; private final StreamAPI api; private StreamType[] types; private Resolution resolution; private SeriesType seriesType; public GetActivityStreamsRequest(int activityID, StreamRest restService, StreamAPI api) { this.activityID = activityID; this.restService = restService; this.api = api; } public GetActivityStreamsRequest forTypes(StreamType... types) { this.types = types; return this; } public GetActivityStreamsRequest withResolution(Resolution resolution) { this.resolution = resolution; return this; } public GetActivityStreamsRequest withSeriesType(SeriesType seriesType) { this.seriesType = seriesType; return this; } public List<Stream> execute() { Call<List<Stream>> call = restService.getActivityStreams(activityID, StreamType.getQueryString(types), resolution, seriesType); return api.execute(call); } }