summaryrefslogtreecommitdiff
path: root/parser/feed/src/main/java/de/danoeh/antennapod
diff options
context:
space:
mode:
authorByteHamster <ByteHamster@users.noreply.github.com>2023-01-29 12:12:08 +0100
committerGitHub <noreply@github.com>2023-01-29 12:12:08 +0100
commite261514c5ba18a028ced8cf68c04c4f485409902 (patch)
tree8302632dfddcdfc2ac83b130b06c47d20e03ea31 /parser/feed/src/main/java/de/danoeh/antennapod
parent73a6ff1f6003c776fb37bd8e7315045e69e710d2 (diff)
downloadAntennaPod-e261514c5ba18a028ced8cf68c04c4f485409902.zip
Update feed url when server returns itunes:new-feed-url (#6291)
Diffstat (limited to 'parser/feed/src/main/java/de/danoeh/antennapod')
-rw-r--r--parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/FeedHandler.java2
-rw-r--r--parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/FeedHandlerResult.java4
-rw-r--r--parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/HandlerState.java1
-rw-r--r--parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/namespace/Itunes.java3
4 files changed, 8 insertions, 2 deletions
diff --git a/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/FeedHandler.java b/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/FeedHandler.java
index 6b364fa73..dd9cb836b 100644
--- a/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/FeedHandler.java
+++ b/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/FeedHandler.java
@@ -31,6 +31,6 @@ public class FeedHandler {
saxParser.parse(inputSource, handler);
inputStreamReader.close();
- return new FeedHandlerResult(handler.state.feed, handler.state.alternateUrls);
+ return new FeedHandlerResult(handler.state.feed, handler.state.alternateUrls, handler.state.redirectUrl);
}
}
diff --git a/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/FeedHandlerResult.java b/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/FeedHandlerResult.java
index 43b3387a0..6db3ca47f 100644
--- a/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/FeedHandlerResult.java
+++ b/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/FeedHandlerResult.java
@@ -11,9 +11,11 @@ public class FeedHandlerResult {
public final Feed feed;
public final Map<String, String> alternateFeedUrls;
+ public final String redirectUrl;
- public FeedHandlerResult(Feed feed, Map<String, String> alternateFeedUrls) {
+ public FeedHandlerResult(Feed feed, Map<String, String> alternateFeedUrls, String redirectUrl) {
this.feed = feed;
this.alternateFeedUrls = alternateFeedUrls;
+ this.redirectUrl = redirectUrl;
}
}
diff --git a/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/HandlerState.java b/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/HandlerState.java
index 706a328e8..650931fc1 100644
--- a/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/HandlerState.java
+++ b/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/HandlerState.java
@@ -26,6 +26,7 @@ public class HandlerState {
* URL of the feed, the value is the title
*/
public final Map<String, String> alternateUrls;
+ public String redirectUrl = null;
private final ArrayList<FeedItem> items;
private FeedItem currentItem;
private FeedFunding currentFunding;
diff --git a/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/namespace/Itunes.java b/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/namespace/Itunes.java
index 9c57d4ef3..cb4bcb8a7 100644
--- a/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/namespace/Itunes.java
+++ b/parser/feed/src/main/java/de/danoeh/antennapod/parser/feed/namespace/Itunes.java
@@ -23,6 +23,7 @@ public class Itunes extends Namespace {
public static final String DURATION = "duration";
private static final String SUBTITLE = "subtitle";
private static final String SUMMARY = "summary";
+ private static final String NEW_FEED_URL = "new-feed-url";
@Override
public SyndElement handleElementStart(String localName, HandlerState state,
@@ -76,6 +77,8 @@ public class Itunes extends Namespace {
} else if (Rss20.CHANNEL.equals(state.getSecondTag().getName()) && state.getFeed() != null) {
state.getFeed().setDescription(content);
}
+ } else if (NEW_FEED_URL.equals(localName) && content.trim().startsWith("http")) {
+ state.redirectUrl = content.trim();
}
}
}