package com.example.myapplication;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.GridLayout;
import android.widget.TextView;
import android.widget.Toast;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;


public class MainActivity extends Activity {

    ProgressDialog progressDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        DownloadNews downloadNews = new DownloadNews();
        downloadNews.execute("https://newsapi.org/v2/top-headlines?country=in&apiKey=fb91ac6414a04acba87f8455e76dbfcc");
    }

    public class DownloadNews extends AsyncTask<String, String, String> {

        @Override
        protected void onPreExecute()
        {
            super.onPreExecute();
            progressDialog = new ProgressDialog(MainActivity.this);
            progressDialog.setTitle("Downloading latest news....please wait");
            progressDialog.show();
        }


        @Override
        protected String doInBackground(String... urls) {

            String result = "";
            URL url;

            try {
                url = new URL(urls[0]);

                HttpURLConnection HttpURLConnection = (HttpURLConnection) url.openConnection();

                InputStream inputStream = HttpURLConnection.getInputStream();
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream);

                int data = inputStreamReader.read();

                while (data != -1) {

                    char current_char = (char) data;

                    result = result + current_char;

                    data = inputStreamReader.read();

                }

            } catch(Exception e){
                e.printStackTrace();
            }
            return result;
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);

            try {

                JSONObject jsonObject = new JSONObject(result);

                String newsInfo = jsonObject.getString("articles");

                JSONArray jsonArray = new JSONArray(newsInfo);

                TextView textView = findViewById(R.id.TextView1);

                for (int num = 0; num < jsonArray.length(); num++) {

                    JSONObject json = jsonArray.getJSONObject(num);

                    textView.append(json.getString("description"));
                    textView.append(System.getProperty("line.separator"));
                    textView.append(System.getProperty("line.separator"));
                    //Log.i("description", jsonPart.getString("description"));
                }
                progressDialog.hide();

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
