in Android/app/src/main/java/com/harvard/webservicemodule/apihelper/ApiCall.java [240:416]
protected final String doInBackground(T... params) {
String responseCode;
ConnectionDetector connectionDetector = new ConnectionDetector(context);
String response;
if (connectionDetector.isConnectingToInternet()) {
switch (webserviceType) {
case "get":
responseModel = HttpRequest.getRequest(urlPassed, headersData, serverType);
break;
case "put_json":
responseModel =
HttpRequest.makePutRequestWithJson(urlPassed, jsonData, headersData, serverType);
break;
case "post_hashmap":
responseModel =
HttpRequest.postRequestsWithHashmap(urlPassed, hashmapData, headersData, serverType);
break;
case "post_json":
responseModel =
HttpRequest.makePostRequestWithJson(urlPassed, jsonData, headersData, serverType);
break;
case "delete_json":
responseModel =
HttpRequest.makeDeleteRequestWithJson(urlPassed, jsonData, headersData, serverType);
break;
}
responseCode = responseModel.getResponseCode();
response = responseModel.getResponseData();
if (responseCode.equalsIgnoreCase("0") && response.equalsIgnoreCase("timeout")) {
response = "timeout";
} else if (responseCode.equalsIgnoreCase("0") && response.equalsIgnoreCase("")) {
response = "error";
} else if (Integer.parseInt(responseCode) == HttpURLConnection.HTTP_UNAUTHORIZED) {
response = "session expired";
if (!this.serverType.equalsIgnoreCase("STUDY_DATASTORE")) {
HashMap<String, String> refreshTokenJsonData = new HashMap();
refreshTokenJsonData.put(
"refresh_token",
AppController.getHelperSharedPreference()
.readPreference(context, context.getString(R.string.refreshToken), ""));
refreshTokenJsonData.put(
"userId",
SharedPreferenceHelper.readPreference(
context, context.getString(R.string.userid), ""));
refreshTokenJsonData.put("redirect_uri", Urls.AUTH_SERVER_REDIRECT_URL);
refreshTokenJsonData.put("client_id", BuildConfig.HYDRA_CLIENT_ID);
refreshTokenJsonData.put("grant_type", "refresh_token");
HashMap<String, String> refreshTokenHeader = new HashMap<>();
refreshTokenHeader.put("Content-Type", "application/x-www-form-urlencoded");
refreshTokenHeader.put("mobilePlatform", "ANDROID");
refreshTokenHeader.put("correlationId", FdaApplication.getRandomString());
String refreshTokenUrl = Urls.BASE_URL_AUTH_SERVER + Urls.TOKENS;
responseModel =
HttpRequest.postRequestsWithHashmap(
refreshTokenUrl, refreshTokenJsonData, refreshTokenHeader, "");
String s = checkResponse(true, responseModel, HttpURLConnection.HTTP_FORBIDDEN);
if (s.equalsIgnoreCase("success")) {
if (headersData != null
&& (headersData.containsKey("Authorization") || headersData.containsKey("auth"))) {
String s1 =
AppController.getHelperSharedPreference()
.readPreference(context, context.getString(R.string.auth), "");
headersData.put("Authorization", "Bearer " + s1);
}
switch (webserviceType) {
case "get":
responseModel = HttpRequest.getRequest(urlPassed, headersData, serverType);
break;
case "put_json":
responseModel =
HttpRequest.makePutRequestWithJson(
urlPassed, jsonData, headersData, serverType);
break;
case "post_hashmap":
responseModel =
HttpRequest.postRequestsWithHashmap(
urlPassed, hashmapData, headersData, serverType);
break;
case "post_json":
responseModel =
HttpRequest.makePostRequestWithJson(
urlPassed, jsonData, headersData, serverType);
break;
case "delete_json":
responseModel =
HttpRequest.makeDeleteRequestWithJson(
urlPassed, jsonData, headersData, serverType);
break;
}
response = checkResponse(false, responseModel, HttpURLConnection.HTTP_UNAUTHORIZED);
} else if (s.equalsIgnoreCase("session expired")
|| s.equalsIgnoreCase("Unknown error")
|| s.equalsIgnoreCase("server error")
|| s.equalsIgnoreCase("client error")
|| s.equalsIgnoreCase("")
|| s.equalsIgnoreCase("No data")) {
responseModel.setResponseCode("401");
responseModel.setServermsg("session expired");
}
} else {
responseModel.setResponseCode(String.valueOf(HttpURLConnection.HTTP_FORBIDDEN));
responseModel.setServermsg(context.getString(R.string.invalid_client));
}
} else if (Integer.parseInt(responseCode) >= HttpURLConnection.HTTP_OK
&& Integer.parseInt(responseCode) < HttpURLConnection.HTTP_MULT_CHOICE
&& !response.equalsIgnoreCase("")) {
response = "success";
obj = parseJson(responseModel, genericClass);
if (urlPassed.contains(Urls.BASE_URL_STUDY_DATASTORE + "/activity")) {
try {
ActivityInfoData activityInfoData = (ActivityInfoData) obj;
JSONObject jsonObject = new JSONObject(responseModel.getResponseData());
JSONObject jsonObjectActivity = jsonObject.getJSONObject("activity");
JSONArray jsonArray = jsonObjectActivity.getJSONArray("steps");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject2 = jsonArray.getJSONObject(i);
JSONObject format = jsonObject2.getJSONObject("format");
String key = jsonObject2.getString("key");
String defaultString = null;
try {
Object defaultValue = format.get("default");
defaultString = "";
if (defaultValue instanceof Integer) {
defaultString = "" + (int) defaultValue;
} else if (defaultValue instanceof Double) {
defaultString = "" + (double) defaultValue;
} else if (defaultValue instanceof Long) {
defaultString = "" + (long) defaultValue;
} else if (defaultValue instanceof String) {
defaultString = "" + (String) defaultValue;
} else {
defaultString = "" + defaultValue;
}
} catch (JSONException e) {
defaultString = "";
Logger.log(e);
}
for (int k = 0; k < activityInfoData.getActivity().getSteps().size(); k++) {
if (activityInfoData
.getActivity()
.getSteps()
.get(k)
.getKey()
.equalsIgnoreCase(key)) {
activityInfoData
.getActivity()
.getSteps()
.get(k)
.getFormat()
.setDefaultValue(defaultString);
}
}
}
obj = (T) activityInfoData;
} catch (Exception e) {
Logger.log(e);
}
}
} else if (Integer.parseInt(responseCode) >= 400 && Integer.parseInt(responseCode) < 500) {
response = "client error";
} else if (Integer.parseInt(responseCode) >= 500 && Integer.parseInt(responseCode) < 600) {
response = "server error";
} else {
response = "";
}
} else {
return "No network";
}
return response;
}