package de.stephanlindauer.criticalmaps.handler; import android.os.AsyncTask; import com.squareup.okhttp.OkHttpClient; import com.squareup.okhttp.Request; import com.squareup.okhttp.Response; import de.stephanlindauer.criticalmaps.App; import de.stephanlindauer.criticalmaps.fragments.TwitterFragment; import de.stephanlindauer.criticalmaps.model.TwitterModel; import de.stephanlindauer.criticalmaps.vo.Endpoints; import de.stephanlindauer.criticalmaps.vo.ResultType; import java.text.ParseException; import org.json.JSONException; public class TwitterGetHandler extends AsyncTask<Void, Void, ResultType> { //dependencies private final TwitterModel twitterModel = App.components().twitterModel(); private final TwitterFragment twitterFragment; private String responseString = ""; public TwitterGetHandler(TwitterFragment twitterFragment) { this.twitterFragment = twitterFragment; } @Override protected ResultType doInBackground(Void... params) { final Request request = new Request.Builder().url(Endpoints.GET_TWITTER).get().build(); final OkHttpClient httpClient = App.components().okHttpClient(); try { final Response response = httpClient.newCall(request).execute(); if (response.isSuccessful()) { responseString = response.body().string(); response.body().close(); return ResultType.SUCCEEDED; } } catch (Exception ignored) { } return ResultType.FAILED; } @Override protected void onPostExecute(ResultType resultType) { if (!twitterFragment.isAdded()) { return; } if (resultType == ResultType.FAILED) { twitterFragment.showErrorMessage(); } else { try { twitterModel.setTweetsFromJsonString(responseString); twitterFragment.displayNewData(); } catch (JSONException | ParseException e) { e.printStackTrace(); } } } }