diff --git a/src/main/java/com/commafeed/backend/feeds/FeedFetcher.java b/src/main/java/com/commafeed/backend/feeds/FeedFetcher.java index 0bc40ba6..46617410 100644 --- a/src/main/java/com/commafeed/backend/feeds/FeedFetcher.java +++ b/src/main/java/com/commafeed/backend/feeds/FeedFetcher.java @@ -45,10 +45,11 @@ public class FeedFetcher { String content = EntityUtils.toString(entity, "UTF-8"); String extractedUrl = extractFeedUrl(content); if (extractedUrl != null) { - httpget = new HttpGet(feedUrl); + httpget = new HttpGet(extractedUrl); response = httpclient.execute(httpget); entity = response.getEntity(); content = EntityUtils.toString(entity, "UTF-8"); + feedUrl = extractedUrl; } feed = parser.parse(feedUrl, content); } catch (Exception e) { diff --git a/src/main/java/com/commafeed/backend/feeds/FeedParser.java b/src/main/java/com/commafeed/backend/feeds/FeedParser.java index fd5506ab..e155d993 100644 --- a/src/main/java/com/commafeed/backend/feeds/FeedParser.java +++ b/src/main/java/com/commafeed/backend/feeds/FeedParser.java @@ -31,7 +31,7 @@ public class FeedParser { try { SyndFeed rss = new SyndFeedInput().build(new StringReader(xml)); - feed.setUrl(rss.getLink() != null ? rss.getLink() : feedUrl); + feed.setUrl(feedUrl); feed.setTitle(rss.getTitle()); List items = rss.getEntries(); for (SyndEntry item : items) { diff --git a/src/main/java/com/commafeed/frontend/rest/resources/SubscriptionsREST.java b/src/main/java/com/commafeed/frontend/rest/resources/SubscriptionsREST.java index 348eed13..f3fafe8b 100644 --- a/src/main/java/com/commafeed/frontend/rest/resources/SubscriptionsREST.java +++ b/src/main/java/com/commafeed/frontend/rest/resources/SubscriptionsREST.java @@ -53,18 +53,11 @@ public class SubscriptionsREST extends AbstractREST { Preconditions.checkNotNull(req.getTitle()); Preconditions.checkNotNull(req.getUrl()); - Feed fetchedFeed = null; - try { - fetchedFeed = feedFetcher.fetch(req.getUrl()); - } catch (FeedException e) { - return Response.status(Status.NOT_FOUND).entity(e.getMessage()) - .build(); - } - + Feed fetchedFeed = fetchFeed(req.getUrl()); Feed feed = feedService.findByUrl(fetchedFeed.getUrl()); if (feed == null) { feed = new Feed(); - feed.setUrl(req.getUrl()); + feed.setUrl(fetchedFeed.getUrl()); feedService.save(feed); }