package com.morristaedt.mirror.modules; import android.os.AsyncTask; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.text.TextUtils; import android.util.Log; import com.morristaedt.mirror.configuration.ConfigurationSettings; import com.morristaedt.mirror.requests.XKCDRequest; import com.morristaedt.mirror.requests.XKCDResponse; import java.util.Calendar; import retrofit.RestAdapter; import retrofit.RetrofitError; /** * Created by HannahMitt on 8/22/15. */ public class XKCDModule { public interface XKCDListener { void onNewXKCDToday(String url); } /** * Fetch the the latest xkcd comic, but only show it if its new today * * @param listener */ public static void getXKCDForToday(final XKCDListener listener) { new AsyncTask<Void, Void, XKCDResponse>() { @Override protected XKCDResponse doInBackground(Void... params) { RestAdapter restAdapter = new RestAdapter.Builder() .setEndpoint("http://xkcd.com") .build(); XKCDRequest service = restAdapter.create(XKCDRequest.class); try { return service.getLatestXKCD(); } catch (RetrofitError e) { Log.w("XKCDModule", "Error loading xkcd", e); return null; } } @Override protected void onPostExecute(@Nullable XKCDResponse xkcdResponse) { if (xkcdResponse != null && !TextUtils.isEmpty(xkcdResponse.img)) { if (ConfigurationSettings.isDemoMode() || isTodaysXKCD(xkcdResponse)) { listener.onNewXKCDToday(xkcdResponse.img); return; } } listener.onNewXKCDToday(null); } private boolean isTodaysXKCD(@NonNull XKCDResponse xkcdResponse) { Calendar today = Calendar.getInstance(); return xkcdResponse.day == today.get(Calendar.DAY_OF_MONTH) && xkcdResponse.month == (today.get(Calendar.MONTH) + 1) && xkcdResponse.year == today.get(Calendar.YEAR); } }.execute(); } }