mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-19 22:29:53 +01:00
Merge branch '1040-rss-feed-illegal-argument-exception' into 'master'
Catch IllegalArgumentException when parsing RSS feed Closes #1040 See merge request !588
This commit is contained in:
@@ -161,12 +161,7 @@ class FeedManagerImpl implements FeedManager, Client, EventListener,
|
|||||||
@Override
|
@Override
|
||||||
public void addFeed(String url) throws DbException, IOException {
|
public void addFeed(String url) throws DbException, IOException {
|
||||||
// fetch syndication feed to get its metadata
|
// fetch syndication feed to get its metadata
|
||||||
SyndFeed f;
|
SyndFeed f = fetchSyndFeed(url);
|
||||||
try {
|
|
||||||
f = fetchSyndFeed(url);
|
|
||||||
} catch (FeedException e) {
|
|
||||||
throw new IOException(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
Feed feed = feedFactory.createFeed(url, f);
|
Feed feed = feedFactory.createFeed(url, f);
|
||||||
|
|
||||||
@@ -183,12 +178,7 @@ class FeedManagerImpl implements FeedManager, Client, EventListener,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// fetch feed again and post entries
|
// fetch feed again and post entries
|
||||||
Feed updatedFeed;
|
Feed updatedFeed = fetchFeed(feed);
|
||||||
try {
|
|
||||||
updatedFeed = fetchFeed(feed);
|
|
||||||
} catch (FeedException e) {
|
|
||||||
throw new IOException(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
// store feed again to also store last added entry
|
// store feed again to also store last added entry
|
||||||
txn = db.startTransaction(false);
|
txn = db.startTransaction(false);
|
||||||
@@ -314,10 +304,6 @@ class FeedManagerImpl implements FeedManager, Client, EventListener,
|
|||||||
for (Feed feed : feeds) {
|
for (Feed feed : feeds) {
|
||||||
try {
|
try {
|
||||||
newFeeds.add(fetchFeed(feed));
|
newFeeds.add(fetchFeed(feed));
|
||||||
} catch (FeedException e) {
|
|
||||||
if (LOG.isLoggable(WARNING))
|
|
||||||
LOG.log(WARNING, e.toString(), e);
|
|
||||||
newFeeds.add(feed);
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
if (LOG.isLoggable(WARNING))
|
if (LOG.isLoggable(WARNING))
|
||||||
LOG.log(WARNING, e.toString(), e);
|
LOG.log(WARNING, e.toString(), e);
|
||||||
@@ -339,15 +325,14 @@ class FeedManagerImpl implements FeedManager, Client, EventListener,
|
|||||||
LOG.info("Done updating RSS feeds");
|
LOG.info("Done updating RSS feeds");
|
||||||
}
|
}
|
||||||
|
|
||||||
private SyndFeed fetchSyndFeed(String url)
|
private SyndFeed fetchSyndFeed(String url) throws IOException {
|
||||||
throws FeedException, IOException {
|
|
||||||
// fetch feed
|
// fetch feed
|
||||||
InputStream stream = getFeedInputStream(url);
|
InputStream stream = getFeedInputStream(url);
|
||||||
SyndFeed f = getSyndFeed(stream);
|
SyndFeed f = getSyndFeed(stream);
|
||||||
stream.close();
|
stream.close();
|
||||||
|
|
||||||
if (f.getEntries().size() == 0)
|
if (f.getEntries().size() == 0)
|
||||||
throw new FeedException("Feed has no entries");
|
throw new IOException("Feed has no entries");
|
||||||
|
|
||||||
// clean title
|
// clean title
|
||||||
String title =
|
String title =
|
||||||
@@ -371,8 +356,7 @@ class FeedManagerImpl implements FeedManager, Client, EventListener,
|
|||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Feed fetchFeed(Feed feed)
|
private Feed fetchFeed(Feed feed) throws IOException, DbException {
|
||||||
throws FeedException, IOException, DbException {
|
|
||||||
// fetch and clean feed
|
// fetch and clean feed
|
||||||
SyndFeed f = fetchSyndFeed(feed.getUrl());
|
SyndFeed f = fetchSyndFeed(feed.getUrl());
|
||||||
|
|
||||||
@@ -402,11 +386,16 @@ class FeedManagerImpl implements FeedManager, Client, EventListener,
|
|||||||
throw new IOException("Empty response body");
|
throw new IOException("Empty response body");
|
||||||
}
|
}
|
||||||
|
|
||||||
private SyndFeed getSyndFeed(InputStream stream)
|
private SyndFeed getSyndFeed(InputStream stream) throws IOException {
|
||||||
throws IOException, FeedException {
|
|
||||||
|
|
||||||
SyndFeedInput input = new SyndFeedInput();
|
SyndFeedInput input = new SyndFeedInput();
|
||||||
return input.build(new XmlReader(stream));
|
try {
|
||||||
|
return input.build(new XmlReader(stream));
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
throw new IOException(e);
|
||||||
|
} catch (FeedException e) {
|
||||||
|
throw new IOException(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private long postFeedEntries(Feed feed, List<SyndEntry> entries)
|
private long postFeedEntries(Feed feed, List<SyndEntry> entries)
|
||||||
|
|||||||
Reference in New Issue
Block a user