package io.codetail.client.mover;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import io.codetail.client.BaseNetworkJob;
import io.codetail.work.Params;
public class FetchAvailableVideoQualities extends BaseNetworkJob<Mover.Suggestion> {
private List<String> mQualities;
String mId;
public FetchAvailableVideoQualities(String id) {
super(new Params(PRIORITY_LOW)
.groupBy("availableVideoQualities")
.requireNetwork());
mQualities = new ArrayList<>();
mQualities.add("b");
mQualities.add("m");
mQualities.add("s");
mId = id;
}
@Override
public void onPreRunning() {
}
@Override
public Mover.Suggestion doBackgroundJob(){
OkHttpClient client = new OkHttpClient();
final int length = mQualities.size();
for(int i = 0; i < length; i++){
if(checkQuality(mId, mQualities.get(0), client)){
break;
}
mQualities.remove(0);
}
return new Mover.Suggestion(mQualities, mId);
}
static <T> T last(List<T> items){
return items.get(items.size() - 1);
}
boolean checkQuality(String id, String quality, OkHttpClient client){
try {
Response response = client.newCall(new Request.Builder()
.url(Mover.MoverVideo.createVideoLink(id, quality))
.get().build())
.execute();
return response.isSuccessful();
} catch (IOException e) {
return false;
}
}
@Override
public void onJobPostResult(Mover.Suggestion result) {
android.util.Log.i("Suggestion", "income");
result.postEvent(getEventBus());
}
@Override
public void onAdded() {
}
@Override
protected boolean shouldReRunOnThrowable(Throwable throwable) {
throwable.printStackTrace();
return false;
}
}