first preliminary version of support for displaying RSS feeds
[mir.git] / source / mir / producer / RSSProducerNode.java
diff --git a/source/mir/producer/RSSProducerNode.java b/source/mir/producer/RSSProducerNode.java
new file mode 100755 (executable)
index 0000000..fc1c442
--- /dev/null
@@ -0,0 +1,33 @@
+package mir.producer;
+
+import java.util.Map;\r
+\r
+import mir.log.LoggerWrapper;\r
+import mir.rss.RSSData;\r
+import mir.rss.RSSReader;\r
+import mir.rss.RSSToMapConverter;\r
+import mir.util.ParameterExpander;
+
+public class RSSProducerNode implements ProducerNode {
+  private String key;
+  private String url;
+
+  public RSSProducerNode(String aKey, String anURL) {
+    key = aKey;
+    url = anURL;
+  }
+
+  public void produce(Map aValueMap, String aVerb, LoggerWrapper aLogger) throws ProducerFailure {
+    try {
+      String expandedKey = ParameterExpander.expandExpression( aValueMap, key );
+      String expandedUrl = ParameterExpander.expandExpression( aValueMap, url );
+
+      RSSReader reader = new RSSReader();
+      RSSData rssData = reader.parseUrl(url);
+      ParameterExpander.setValueForKey(aValueMap, expandedKey, RSSToMapConverter.convertRSSData(rssData));
+    }
+    catch (Throwable t) {
+      aLogger.error("Error while processing RSS data: " + t.toString());
+    }
+  };
+}
\ No newline at end of file