package com.microsoft.aad.taskapplication.helpers; import android.os.AsyncTask; import org.json.JSONArray; import org.json.JSONObject; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.List; public class TodoListHttpService { private class TodoServiceGetAll extends AsyncTask<String, Void, List<String>> { @Override protected List<String> doInBackground(String... params) { HttpURLConnection conn = null; BufferedReader br = null; try { List<String> items = new ArrayList<>(); URL url = new URL(Constants.SERVICE_URL); conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("Content-Type", "application/json"); conn.setRequestProperty("Authorization", "Bearer " + params[0]); if (conn.getResponseCode() != 200) { throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode()); } br = new BufferedReader(new InputStreamReader((conn.getInputStream()))); String apiOutput = br.readLine(); JSONArray jsonArray = new JSONArray(apiOutput); JSONObject obj = null; for (int i = 0; i < jsonArray.length(); i++) { obj = jsonArray.getJSONObject(i); items.add(obj.getString("task")); } return items; } catch (Exception e) { return new ArrayList<>(); } finally { AppHelper.close(br); if (conn != null) { conn.disconnect(); } } } } private class TodoServicePostTask extends AsyncTask<String, Void, Void> { @Override protected Void doInBackground(String... params) { HttpURLConnection conn = null; BufferedReader br = null; try { List<String> items = new ArrayList<>(); URL url = new URL(Constants.SERVICE_URL); conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("Content-Type", "application/json"); conn.setRequestProperty("Authorization", "Bearer " + params[1]); String urlParameters = "{ \"task\": \"" + params[0] + "\" }"; // Send post request conn.setDoOutput(true); DataOutputStream wr = new DataOutputStream(conn.getOutputStream()); wr.writeBytes(urlParameters); wr.flush(); wr.close(); int responseCode = conn.getResponseCode(); if (responseCode != 200 || responseCode != 204) { throw new Exception("invalid response code:" + responseCode); } } catch (Exception e) { //TODO - do what? } finally { AppHelper.close(br); if (conn != null) { conn.disconnect(); } } return null; } } public List<String> getAllItems(String token) throws Exception { return new TodoServiceGetAll().execute(token).get(); } public void addItem(String title, String token) throws Exception { new TodoServicePostTask().execute(title, token); } }