Loading src/com/owncloud/android/lib/resources/activities/GetRemoteActivitiesOperation.java +37 −6 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import com.owncloud.android.lib.resources.activities.models.RichElement; import com.owncloud.android.lib.resources.activities.models.RichElementTypeAdapter; import com.owncloud.android.lib.resources.status.OwnCloudVersion; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.methods.GetMethod; import org.json.JSONException; Loading @@ -68,18 +69,28 @@ public class GetRemoteActivitiesOperation extends RemoteOperation{ private static final String NODE_DATA = "data"; private String nextUrl = ""; public void setNextUrl(String url) { nextUrl = url; } @Override protected RemoteOperationResult run(OwnCloudClient client) { RemoteOperationResult result = null; int status = -1; GetMethod get = null; ArrayList<Object> activities; ArrayList<Activity> activities; String url; if (nextUrl.isEmpty()) { if (client.getOwnCloudVersion().compareTo(OwnCloudVersion.nextcloud_12) >= 0) { url = client.getBaseUri() + OCS_ROUTE_V12_AND_UP; } else { url = client.getBaseUri() + OCS_ROUTE_PRE_V12; } } else { url = nextUrl; } Log_OC.d(TAG, "URL: " + url); try { Loading @@ -89,12 +100,28 @@ public class GetRemoteActivitiesOperation extends RemoteOperation{ status = client.executeMethod(get); String response = get.getResponseBodyAsString(); Header nextPageHeader = get.getResponseHeader("Link"); if (nextPageHeader != null) { String link = nextPageHeader.getValue(); if (link.startsWith("<") && link.endsWith(">; rel=\"next\"")) { nextUrl = nextPageHeader.getValue().substring(1, link.length() - 13); } else { nextUrl = ""; } } else { nextUrl = ""; } if (isSuccess(status)) { Log_OC.d(TAG, "Successful response: " + response); result = new RemoteOperationResult(true, status, get.getResponseHeaders()); // Parse the response activities = parseResult(response); result.setData(activities); ArrayList<Object> data = new ArrayList<>(); data.add(activities); data.add(nextUrl); result.setData(data); } else { result = new RemoteOperationResult(false, status, get.getResponseHeaders()); Log_OC.e(TAG, "Failed response while getting user activities "); Loading @@ -116,7 +143,11 @@ public class GetRemoteActivitiesOperation extends RemoteOperation{ return result; } private ArrayList<Object> parseResult(String response) throws JSONException { public boolean hasMoreActivities() { return !nextUrl.isEmpty(); } private ArrayList<Activity> parseResult(String response) throws JSONException { JsonParser jsonParser = new JsonParser(); JsonObject jo = (JsonObject)jsonParser.parse(response); JsonArray jsonDataArray = jo.getAsJsonObject(NODE_OCS).getAsJsonArray(NODE_DATA); Loading Loading
src/com/owncloud/android/lib/resources/activities/GetRemoteActivitiesOperation.java +37 −6 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import com.owncloud.android.lib.resources.activities.models.RichElement; import com.owncloud.android.lib.resources.activities.models.RichElementTypeAdapter; import com.owncloud.android.lib.resources.status.OwnCloudVersion; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.methods.GetMethod; import org.json.JSONException; Loading @@ -68,18 +69,28 @@ public class GetRemoteActivitiesOperation extends RemoteOperation{ private static final String NODE_DATA = "data"; private String nextUrl = ""; public void setNextUrl(String url) { nextUrl = url; } @Override protected RemoteOperationResult run(OwnCloudClient client) { RemoteOperationResult result = null; int status = -1; GetMethod get = null; ArrayList<Object> activities; ArrayList<Activity> activities; String url; if (nextUrl.isEmpty()) { if (client.getOwnCloudVersion().compareTo(OwnCloudVersion.nextcloud_12) >= 0) { url = client.getBaseUri() + OCS_ROUTE_V12_AND_UP; } else { url = client.getBaseUri() + OCS_ROUTE_PRE_V12; } } else { url = nextUrl; } Log_OC.d(TAG, "URL: " + url); try { Loading @@ -89,12 +100,28 @@ public class GetRemoteActivitiesOperation extends RemoteOperation{ status = client.executeMethod(get); String response = get.getResponseBodyAsString(); Header nextPageHeader = get.getResponseHeader("Link"); if (nextPageHeader != null) { String link = nextPageHeader.getValue(); if (link.startsWith("<") && link.endsWith(">; rel=\"next\"")) { nextUrl = nextPageHeader.getValue().substring(1, link.length() - 13); } else { nextUrl = ""; } } else { nextUrl = ""; } if (isSuccess(status)) { Log_OC.d(TAG, "Successful response: " + response); result = new RemoteOperationResult(true, status, get.getResponseHeaders()); // Parse the response activities = parseResult(response); result.setData(activities); ArrayList<Object> data = new ArrayList<>(); data.add(activities); data.add(nextUrl); result.setData(data); } else { result = new RemoteOperationResult(false, status, get.getResponseHeaders()); Log_OC.e(TAG, "Failed response while getting user activities "); Loading @@ -116,7 +143,11 @@ public class GetRemoteActivitiesOperation extends RemoteOperation{ return result; } private ArrayList<Object> parseResult(String response) throws JSONException { public boolean hasMoreActivities() { return !nextUrl.isEmpty(); } private ArrayList<Activity> parseResult(String response) throws JSONException { JsonParser jsonParser = new JsonParser(); JsonObject jo = (JsonObject)jsonParser.parse(response); JsonArray jsonDataArray = jo.getAsJsonObject(NODE_OCS).getAsJsonArray(NODE_DATA); Loading