diff options
author | Stefan Niedermann <info@niedermann.it> | 2020-07-23 10:10:56 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2020-07-23 10:10:56 +0300 |
commit | 978689ae0c2f76310049803af42de657cccb56f6 (patch) | |
tree | f66873233971ee88bcaefd9a77e2c629ee8e286c /app/src/main/java/it/niedermann/nextcloud/deck/api | |
parent | 16fe14d82f46075f6d5916f18c07b6143676a021 (diff) | |
parent | ce0c824f814ddb440306547a9ff4509c9a8aec68 (diff) |
Merge branch 'master' into 435-capabilities-etags
# Conflicts:
# app/src/main/java/it/niedermann/nextcloud/deck/model/Account.java
# app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DeckDatabase.java
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/api')
3 files changed, 78 insertions, 0 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/api/GsonConfig.java b/app/src/main/java/it/niedermann/nextcloud/deck/api/GsonConfig.java index 7c1727fb7..fa03286b4 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/api/GsonConfig.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/api/GsonConfig.java @@ -16,6 +16,7 @@ import it.niedermann.nextcloud.deck.model.full.FullStack; import it.niedermann.nextcloud.deck.model.ocs.Activity; import it.niedermann.nextcloud.deck.model.ocs.Capabilities; import it.niedermann.nextcloud.deck.model.ocs.comment.OcsComment; +import it.niedermann.nextcloud.deck.model.ocs.projects.OcsProjectList; import it.niedermann.nextcloud.deck.model.ocs.user.OcsUserList; /** @@ -44,6 +45,7 @@ public class GsonConfig { Type attachment = new TypeToken<Attachment>() {}.getType(); Type attachmentList = new TypeToken<List<Attachment>>() {}.getType(); Type comment = new TypeToken<OcsComment>() {}.getType(); + Type projectList = new TypeToken<OcsProjectList>() {}.getType(); INSTANCE = new GsonBuilder() .setDateFormat(DATE_PATTERN) @@ -64,6 +66,7 @@ public class GsonConfig { .registerTypeAdapter(attachmentList, new NextcloudArrayDeserializer<>("attachments", Attachment.class)) .registerTypeAdapter(attachment, new NextcloudDeserializer<>("attachment", Attachment.class)) .registerTypeAdapter(comment, new NextcloudDeserializer<>("comment", OcsComment.class)) + .registerTypeAdapter(projectList, new NextcloudDeserializer<>("projectList", OcsProjectList.class)) .create(); } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/api/JsonToEntityParser.java b/app/src/main/java/it/niedermann/nextcloud/deck/api/JsonToEntityParser.java index 578104bba..fc3dbc834 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/api/JsonToEntityParser.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/api/JsonToEntityParser.java @@ -31,6 +31,9 @@ import it.niedermann.nextcloud.deck.model.ocs.Version; import it.niedermann.nextcloud.deck.model.ocs.comment.DeckComment; import it.niedermann.nextcloud.deck.model.ocs.comment.Mention; import it.niedermann.nextcloud.deck.model.ocs.comment.OcsComment; +import it.niedermann.nextcloud.deck.model.ocs.projects.OcsProject; +import it.niedermann.nextcloud.deck.model.ocs.projects.OcsProjectList; +import it.niedermann.nextcloud.deck.model.ocs.projects.OcsProjectResource; import it.niedermann.nextcloud.deck.model.ocs.user.OcsUser; import it.niedermann.nextcloud.deck.model.ocs.user.OcsUserList; @@ -58,6 +61,8 @@ public class JsonToEntityParser { return (T) parseAttachment(obj); } else if (mType == OcsComment.class) { return (T) parseOcsComment(obj); + } else if (mType == OcsProjectList.class) { + return (T) parseOcsProjectList(obj); } throw new IllegalArgumentException("unregistered type: " + mType.getCanonicalName()); } @@ -86,6 +91,72 @@ public class JsonToEntityParser { }, obj); return ocsUserList; } + private static OcsProjectList parseOcsProjectList(JsonObject obj) { + DeckLog.verbose(obj.toString()); + OcsProjectList projectList = new OcsProjectList(); + makeTraceableIfFails(() -> { + JsonElement data = obj.get("ocs").getAsJsonObject().get("data"); + if (!data.isJsonNull() && data.isJsonArray()) { + JsonArray projectJsonArray = data.getAsJsonArray(); + for (JsonElement jsonArrayElement : projectJsonArray) { + if (jsonArrayElement.isJsonObject()) { + JsonObject jsonObject = jsonArrayElement.getAsJsonObject(); + OcsProject project = new OcsProject(); + project.setId(jsonObject.get("id").getAsLong()); + project.setName(getNullAsEmptyString(jsonObject.get("name"))); + project.setResources(new ArrayList<>()); + JsonElement jsonResources = jsonObject.get("resources"); + if (jsonResources != null && jsonResources.isJsonArray()){ + JsonArray resourcesArray = jsonResources.getAsJsonArray(); + for (JsonElement resourceElement : resourcesArray) { + if (resourceElement.isJsonObject()){ + OcsProjectResource resource = parseOcsProjectResource(resourceElement.getAsJsonObject()); + resource.setProjectId(project.getId()); + project.getResources().add(resource); + } + } + } + projectList.add(project); + } + } + } + + }, obj); + return projectList; + } + + private static OcsProjectResource parseOcsProjectResource(JsonObject obj) { + DeckLog.verbose(obj.toString()); + OcsProjectResource resource = new OcsProjectResource(); + makeTraceableIfFails(() -> { + resource.setId(Long.parseLong(getNullAsEmptyString(obj.get("id")))); + if (obj.has("type")) { + resource.setType(getNullAsEmptyString(obj.get("type"))); + } + if (obj.has("name")) { + resource.setName(getNullAsEmptyString(obj.get("name"))); + } + if (obj.has("link")) { + resource.setLink(getNullAsEmptyString(obj.get("link"))); + } + if (obj.has("iconUrl")) { + resource.setIconUrl(getNullAsEmptyString(obj.get("iconUrl"))); + } + if (obj.has("path")) { + resource.setPath(obj.get("path").getAsString()); + } + if (obj.has("mimetype")) { + resource.setMimetype(obj.get("mimetype").getAsString()); + } + if (obj.has("preview-available")) { + resource.setPreviewAvailable(obj.get("preview-available").getAsBoolean()); + } else { + resource.setPreviewAvailable(false); + } + + }, obj); + return resource; + } private static OcsComment parseOcsComment(JsonObject obj) { DeckLog.verbose(obj.toString()); diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/api/NextcloudServerAPI.java b/app/src/main/java/it/niedermann/nextcloud/deck/api/NextcloudServerAPI.java index d766e51c4..07c1d745e 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/api/NextcloudServerAPI.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/api/NextcloudServerAPI.java @@ -10,6 +10,7 @@ import it.niedermann.nextcloud.deck.model.ocs.Activity; import it.niedermann.nextcloud.deck.model.ocs.Capabilities; import it.niedermann.nextcloud.deck.model.ocs.comment.DeckComment; import it.niedermann.nextcloud.deck.model.ocs.comment.OcsComment; +import it.niedermann.nextcloud.deck.model.ocs.projects.OcsProjectList; import it.niedermann.nextcloud.deck.model.ocs.user.OcsUserList; import retrofit2.http.Body; import retrofit2.http.DELETE; @@ -26,6 +27,9 @@ public interface NextcloudServerAPI { @GET("cloud/capabilities?format=json") Observable<ParsedResponse<Capabilities>> getCapabilities(@Header("If-None-Match") String eTag); + @GET("collaboration/resources/deck-card/{cardId}?format=json") + Observable<OcsProjectList> getProjectsForCard(@Path("cardId") long cardId); + @GET("apps/files_sharing/api/v1/sharees?format=json&perPage=20&itemType=0%2C1%2C7") Observable<OcsUserList> searchUser(@Query("search") String searchTerm); |