package co.touchlab.droidconandroid.tasks; import android.content.Context; import co.touchlab.android.threading.eventbus.EventBusExt; import co.touchlab.android.threading.tasks.Task; import co.touchlab.droidconandroid.CrashReport; import co.touchlab.droidconandroid.data.AppPrefs; import co.touchlab.droidconandroid.network.DataHelper; import co.touchlab.droidconandroid.network.WatchVideoRequest; import co.touchlab.droidconandroid.presenter.AppManager; import retrofit.RestAdapter; import retrofit.RetrofitError; import retrofit.client.Response; /** * Created by kgalligan on 8/17/16. */ public abstract class AbstractWatchVideoTask extends Task { public boolean videoOk; public boolean unauthorized; @Override protected void onComplete(Context context) { EventBusExt.getDefault().post(this); } @Override protected void run(Context context) throws Throwable { RestAdapter restAdapter = DataHelper.makeRequestAdapter(context, AppManager.getPlatformClient()); WatchVideoRequest watchVideoRequest = restAdapter.create(WatchVideoRequest.class); AppPrefs appPrefs = AppPrefs.getInstance(context); String email = appPrefs.getEventbriteEmail(); String uuid = appPrefs.getVideoDeviceId(); boolean checkVideo = this instanceof CheckWatchVideoTask; if(checkVideo) { //If we're just checking, always be OK unless its 401 //If starting, only OK if explicitly 200 videoOk = true; } long conventionId = AppManager.getPlatformClient().getConventionId().longValue(); try { Response response = callVideoUrl(watchVideoRequest, email, uuid, conventionId); videoOk = response.getStatus() == 200; } catch(Exception e) { CrashReport.logException(e); if(e instanceof RetrofitError) { RetrofitError retrofitError = (RetrofitError) e; int errorStatus = retrofitError.getResponse().getStatus(); unauthorized = errorStatus == 401; if(checkVideo && errorStatus == 401) videoOk = false; } } } abstract Response callVideoUrl(WatchVideoRequest watchVideoRequest, String email, String uuid, long conventionId); @Override protected boolean handleError(Context context, Throwable throwable) { CrashReport.logException(throwable); return true; } }