1 package com.folioreader.ui.base;
3 import android.os.AsyncTask;
4 import android.util.Log;
6 import com.folioreader.model.dictionary.Wikipedia;
7 import com.folioreader.util.AppUtil;
9 import org.json.JSONArray;
10 import org.json.JSONException;
12 import java.io.BufferedReader;
13 import java.io.IOException;
14 import java.io.InputStream;
15 import java.io.InputStreamReader;
17 import java.net.URLConnection;
20 * @author gautam chibde on 4/7/17.
23 public class WikipediaTask extends AsyncTask<String, Void, Wikipedia> {
25 private static final String TAG = "WikipediaTask";
27 private WikipediaCallBack callBack;
29 public WikipediaTask(WikipediaCallBack callBack) {
30 this.callBack = callBack;
34 protected Wikipedia doInBackground(String... strings) {
35 String strUrl = strings[0];
37 URL url = new URL(strUrl);
38 URLConnection urlConnection = url.openConnection();
39 InputStream inputStream = urlConnection.getInputStream();
40 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, AppUtil.charsetNameForURLConnection(urlConnection)));
41 StringBuilder stringBuilder = new StringBuilder();
43 while ((line = bufferedReader.readLine()) != null) {
44 stringBuilder.append(line);
48 JSONArray array = new JSONArray(stringBuilder.toString());
50 if (array.length() == 4) {
52 Wikipedia wikipedia = new Wikipedia();
53 wikipedia.setWord(array.get(0).toString());
54 JSONArray defs = (JSONArray) array.get(2);
55 wikipedia.setDefinition(defs.get(0).toString());
56 JSONArray links = (JSONArray) array.get(3);
57 wikipedia.setLink(links.get(0).toString());
59 } catch (Exception e) {
60 Log.e(TAG, "WikipediaTask failed", e);
67 } catch (JSONException e) {
68 Log.e(TAG, "WikipediaTask failed", e);
71 } catch (IOException e) {
72 Log.e(TAG, "WikipediaTask failed", e);
78 protected void onPostExecute(Wikipedia wikipedia) {
79 super.onPostExecute(wikipedia);
80 if (wikipedia != null) {
81 callBack.onWikipediaDataReceived(wikipedia);