summaryrefslogtreecommitdiff
path: root/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/Rss2Generator.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/Rss2Generator.java')
-rw-r--r--app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/Rss2Generator.java129
1 files changed, 129 insertions, 0 deletions
diff --git a/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/Rss2Generator.java b/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/Rss2Generator.java
new file mode 100644
index 000000000..a9a6f91e7
--- /dev/null
+++ b/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/Rss2Generator.java
@@ -0,0 +1,129 @@
+package de.test.antennapod.util.syndication.feedgenerator;
+
+import android.util.Xml;
+
+import org.xmlpull.v1.XmlSerializer;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+import de.danoeh.antennapod.core.feed.Feed;
+import de.danoeh.antennapod.core.feed.FeedItem;
+import de.danoeh.antennapod.core.util.DateUtils;
+
+/**
+ * Creates RSS 2.0 feeds. See FeedGenerator for more information.
+ */
+public class Rss2Generator implements FeedGenerator {
+
+ public static final long FEATURE_WRITE_GUID = 1;
+
+ @Override
+ public void writeFeed(Feed feed, OutputStream outputStream, String encoding, long flags) throws IOException {
+ if (feed == null) {
+ throw new IllegalArgumentException("feed = null");
+ } else if (outputStream == null) {
+ throw new IllegalArgumentException("outputStream = null");
+ } else if (encoding == null) {
+ throw new IllegalArgumentException("encoding = null");
+ }
+
+ XmlSerializer xml = Xml.newSerializer();
+ xml.setOutput(outputStream, encoding);
+ xml.startDocument(encoding, null);
+
+ xml.setPrefix("atom", "http://www.w3.org/2005/Atom");
+ xml.startTag(null, "rss");
+ xml.attribute(null, "version", "2.0");
+ xml.startTag(null, "channel");
+
+ // Write Feed data
+ if (feed.getTitle() != null) {
+ xml.startTag(null, "title");
+ xml.text(feed.getTitle());
+ xml.endTag(null, "title");
+ }
+ if (feed.getDescription() != null) {
+ xml.startTag(null, "description");
+ xml.text(feed.getDescription());
+ xml.endTag(null, "description");
+ }
+ if (feed.getLink() != null) {
+ xml.startTag(null, "link");
+ xml.text(feed.getLink());
+ xml.endTag(null, "link");
+ }
+ if (feed.getLanguage() != null) {
+ xml.startTag(null, "language");
+ xml.text(feed.getLanguage());
+ xml.endTag(null, "language");
+ }
+ if (feed.getImageUrl() != null) {
+ xml.startTag(null, "image");
+ xml.startTag(null, "url");
+ xml.text(feed.getImageUrl());
+ xml.endTag(null, "url");
+ xml.endTag(null, "image");
+ }
+
+ if (feed.getPaymentLink() != null) {
+ GeneratorUtil.addPaymentLink(xml, feed.getPaymentLink(), true);
+ }
+
+ // Write FeedItem data
+ if (feed.getItems() != null) {
+ for (FeedItem item : feed.getItems()) {
+ xml.startTag(null, "item");
+
+ if (item.getTitle() != null) {
+ xml.startTag(null, "title");
+ xml.text(item.getTitle());
+ xml.endTag(null, "title");
+ }
+ if (item.getDescription() != null) {
+ xml.startTag(null, "description");
+ xml.text(item.getDescription());
+ xml.endTag(null, "description");
+ }
+ if (item.getLink() != null) {
+ xml.startTag(null, "link");
+ xml.text(item.getLink());
+ xml.endTag(null, "link");
+ }
+ if (item.getPubDate() != null) {
+ xml.startTag(null, "pubDate");
+ xml.text(DateUtils.formatRFC822Date(item.getPubDate()));
+ xml.endTag(null, "pubDate");
+ }
+ if ((flags & FEATURE_WRITE_GUID) != 0) {
+ xml.startTag(null, "guid");
+ xml.text(item.getItemIdentifier());
+ xml.endTag(null, "guid");
+ }
+ if (item.getMedia() != null) {
+ xml.startTag(null, "enclosure");
+ xml.attribute(null, "url", item.getMedia().getDownload_url());
+ xml.attribute(null, "length", String.valueOf(item.getMedia().getSize()));
+ xml.attribute(null, "type", item.getMedia().getMime_type());
+ xml.endTag(null, "enclosure");
+ }
+ if (item.getPaymentLink() != null) {
+ GeneratorUtil.addPaymentLink(xml, item.getPaymentLink(), true);
+ }
+
+ xml.endTag(null, "item");
+ }
+ }
+
+ writeAdditionalAttributes(xml);
+
+ xml.endTag(null, "channel");
+ xml.endTag(null, "rss");
+
+ xml.endDocument();
+ }
+
+ protected void writeAdditionalAttributes(XmlSerializer xml) throws IOException {
+
+ }
+}