summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2020-05-14 21:56:45 +0200
committerByteHamster <info@bytehamster.com>2020-05-16 19:30:44 +0200
commitbb15f25832e345c156aafe33d382bb900cb6046c (patch)
tree324f4e9f53d062cc90743f7225b06aa924eda4d0 /core
parent92033f8373cd9dedbf2d961cf064e4878e225346 (diff)
downloadAntennaPod-bb15f25832e345c156aafe33d382bb900cb6046c.zip
Fixed feeds with newlines in their image tags
Diffstat (limited to 'core')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSRSS20.java13
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/util/SyndStringUtils.java14
2 files changed, 21 insertions, 6 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSRSS20.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSRSS20.java
index 3fc0a69d2..45c5d4884 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSRSS20.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSRSS20.java
@@ -3,6 +3,7 @@ package de.danoeh.antennapod.core.syndication.namespace;
import android.text.TextUtils;
import android.util.Log;
+import de.danoeh.antennapod.core.syndication.util.SyndStringUtils;
import org.xml.sax.Attributes;
import de.danoeh.antennapod.core.feed.FeedItem;
@@ -98,7 +99,8 @@ public class NSRSS20 extends Namespace {
}
state.setCurrentItem(null);
} else if (state.getTagstack().size() >= 2 && state.getContentBuf() != null) {
- String content = state.getContentBuf().toString();
+ String contentRaw = state.getContentBuf().toString();
+ String content = SyndStringUtils.trimAllWhitespace(contentRaw);
SyndElement topElement = state.getTagstack().peek();
String top = topElement.getName();
SyndElement secondElement = state.getSecondTag();
@@ -110,15 +112,14 @@ public class NSRSS20 extends Namespace {
if (GUID.equals(top) && ITEM.equals(second)) {
// some feed creators include an empty or non-standard guid-element in their feed,
// which should be ignored
- if (!TextUtils.isEmpty(content) && state.getCurrentItem() != null) {
- state.getCurrentItem().setItemIdentifier(content);
+ if (!TextUtils.isEmpty(contentRaw) && state.getCurrentItem() != null) {
+ state.getCurrentItem().setItemIdentifier(contentRaw);
}
} else if (TITLE.equals(top)) {
- String title = content.trim();
if (ITEM.equals(second) && state.getCurrentItem() != null) {
- state.getCurrentItem().setTitle(title);
+ state.getCurrentItem().setTitle(content);
} else if (CHANNEL.equals(second) && state.getFeed() != null) {
- state.getFeed().setTitle(title);
+ state.getFeed().setTitle(content);
}
} else if (LINK.equals(top)) {
if (CHANNEL.equals(second) && state.getFeed() != null) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/util/SyndStringUtils.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/util/SyndStringUtils.java
new file mode 100644
index 000000000..addcdd4b7
--- /dev/null
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/util/SyndStringUtils.java
@@ -0,0 +1,14 @@
+package de.danoeh.antennapod.core.syndication.util;
+
+public class SyndStringUtils {
+ private SyndStringUtils() {
+
+ }
+
+ /**
+ * Trims all whitespace from beginning and ending of a String. {{@link String#trim()}} only trims spaces.
+ */
+ public static String trimAllWhitespace(String string) {
+ return string.replaceAll("(^\\s*)|(\\s*$)", "");
+ }
+}