display error messages

This commit is contained in:
Athou
2013-03-31 18:47:17 +02:00
parent a9e5c50b3f
commit 5994369e01
8 changed files with 34 additions and 6 deletions

View File

@@ -43,6 +43,13 @@ public class FeedFetcher {
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
String content = EntityUtils.toString(entity, "UTF-8");
String extractedUrl = extractFeedUrl(content);
if (extractedUrl != null) {
httpget = new HttpGet(feedUrl);
response = httpclient.execute(httpget);
entity = response.getEntity();
content = EntityUtils.toString(entity, "UTF-8");
}
feed = parser.parse(feedUrl, content);
} catch (Exception e) {
throw new FeedException(e.getMessage(), e);
@@ -52,7 +59,7 @@ public class FeedFetcher {
return feed;
}
public String extractFeedUrl(String html) {
private String extractFeedUrl(String html) {
String foundUrl = null;
Document doc = Jsoup.parse(html);

View File

@@ -27,11 +27,11 @@ public class FeedParser {
@SuppressWarnings("unchecked")
public Feed parse(String feedUrl, String xml) throws FeedException {
Feed feed = new Feed();
feed.setUrl(feedUrl);
feed.setLastUpdated(Calendar.getInstance().getTime());
try {
SyndFeed rss = new SyndFeedInput().build(new StringReader(xml));
feed.setUrl(rss.getLink() != null ? rss.getLink() : feedUrl);
feed.setTitle(rss.getTitle());
List<SyndEntry> items = rss.getEntries();
for (SyndEntry item : items) {

View File

@@ -8,6 +8,7 @@ import com.google.common.collect.Lists;
@SuppressWarnings("serial")
public class Entries implements Serializable {
private String name;
private String message;
private List<Entry> entries = Lists.newArrayList();
public String getName() {
@@ -26,4 +27,12 @@ public class Entries implements Serializable {
this.entries = entries;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}

View File

@@ -56,6 +56,7 @@ public class EntriesREST extends AbstractREST {
getUser(), Long.valueOf(id));
if (subscription != null) {
entries.setName(subscription.getTitle());
entries.setMessage(subscription.getFeed().getMessage());
entries.getEntries().addAll(
buildEntries(subscription, offset, limit, unreadOnly));
}

View File

@@ -53,7 +53,15 @@ public class SubscriptionsREST extends AbstractREST {
Preconditions.checkNotNull(req.getTitle());
Preconditions.checkNotNull(req.getUrl());
Feed feed = feedService.findByUrl(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 feed = feedService.findByUrl(fetchedFeed.getUrl());
if (feed == null) {
feed = new Feed();
feed.setUrl(req.getUrl());