summaryrefslogtreecommitdiff
path: root/src/com/p4square/grow/frontend/FeedData.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/p4square/grow/frontend/FeedData.java')
-rw-r--r--src/com/p4square/grow/frontend/FeedData.java65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/com/p4square/grow/frontend/FeedData.java b/src/com/p4square/grow/frontend/FeedData.java
new file mode 100644
index 0000000..acff8d9
--- /dev/null
+++ b/src/com/p4square/grow/frontend/FeedData.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2014 Jesse Morgan
+ */
+
+package com.p4square.grow.frontend;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.restlet.Context;
+import org.restlet.Restlet;
+
+import com.fasterxml.jackson.databind.JavaType;
+import com.fasterxml.jackson.databind.type.TypeFactory;
+
+import com.p4square.grow.config.Config;
+import com.p4square.grow.frontend.JsonRequestProvider;
+import com.p4square.grow.model.Message;
+import com.p4square.grow.model.MessageThread;
+import com.p4square.grow.provider.JsonEncodedProvider;
+import com.p4square.grow.provider.Provider;
+
+/**
+ * Fetch feed data for a topic.
+ */
+public class FeedData {
+
+ private final Config mConfig;
+ private final String mBackendURI;
+
+ private final Provider<String, List<MessageThread>> mThreadProvider;
+ private final Provider<String, List<Message>> mMessageProvider;
+
+ public FeedData(final Context context, final Config config) {
+ mConfig = config;
+ mBackendURI = mConfig.getString("backendUri", "riap://component/backend") + "/feed";
+
+ Restlet clientDispatcher = context.getClientDispatcher();
+
+ TypeFactory factory = JsonEncodedProvider.MAPPER.getTypeFactory();
+
+ JavaType threadType = factory.constructCollectionType(List.class, MessageThread.class);
+ mThreadProvider = new JsonRequestProvider<List<MessageThread>>(clientDispatcher, threadType);
+
+ JavaType messageType = factory.constructCollectionType(List.class, Message.class);
+ mMessageProvider = new JsonRequestProvider<List<Message>>(clientDispatcher, messageType);
+ }
+
+ public List<MessageThread> getThreads(final String topic) throws IOException {
+ return mThreadProvider.get(makeUrl(topic));
+ }
+
+ public List<Message> getMessages(final String topic, final String threadId) throws IOException {
+ return mMessageProvider.get(makeUrl(topic, threadId));
+ }
+
+ private String makeUrl(String... parts) {
+ String url = mBackendURI;
+ for (String part : parts) {
+ url += "/" + part;
+ }
+
+ return url;
+ }
+}