Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2020-07-23 10:10:56 +0300
committerStefan Niedermann <info@niedermann.it>2020-07-23 10:10:56 +0300
commit978689ae0c2f76310049803af42de657cccb56f6 (patch)
treef66873233971ee88bcaefd9a77e2c629ee8e286c /app/src/main/java/it/niedermann/nextcloud/deck/api
parent16fe14d82f46075f6d5916f18c07b6143676a021 (diff)
parentce0c824f814ddb440306547a9ff4509c9a8aec68 (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')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/api/GsonConfig.java3
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/api/JsonToEntityParser.java71
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/api/NextcloudServerAPI.java4
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);