package com.khmelenko.lab.varis.task.travis;
import android.content.Context;
import com.khmelenko.lab.varis.R;
import com.khmelenko.lab.varis.TravisApp;
import com.khmelenko.lab.varis.event.travis.IntentUrlSuccessEvent;
import com.khmelenko.lab.varis.event.travis.LoadingFailedEvent;
import com.khmelenko.lab.varis.task.Task;
import com.khmelenko.lab.varis.task.TaskError;
import com.khmelenko.lab.varis.task.TaskException;
import java.io.IOException;
import com.squareup.okhttp.Response;
/**
* Intent URL task
*
* @author Dmytro Khmelenko (d.khmelenko@gmail.com)
*/
public class IntentUrlTask extends Task<String> {
private final String mUrl;
/**
* Constructor
*
* @param url URL
*/
public IntentUrlTask(String url) {
mUrl = url;
}
@Override
public String execute() throws TaskException {
String redirectUrl = mUrl;
try {
Response response = rawClient().singleRequest(mUrl);
if(response.isRedirect()) {
redirectUrl = response.header("Location", "");
}
} catch (IOException e) {
Context context = TravisApp.getAppContext();
String msg = context.getString(R.string.error_network);
TaskError taskError = new TaskError(TaskError.NETWORK_ERROR, msg);
throw new TaskException(taskError);
}
return redirectUrl;
}
@Override
public void onSuccess(String result) {
IntentUrlSuccessEvent event = new IntentUrlSuccessEvent(result);
eventBus().post(event);
}
@Override
public void onFail(TaskError error) {
LoadingFailedEvent event = new LoadingFailedEvent(error);
eventBus().post(event);
}
}