forked from Archives/Athou_commafeed
display error messages
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
ng-class="{selected: (node.id == selectedId && selectedType == 'category')}">{{formatCategoryName({category:node})}}
|
||||
</label>
|
||||
<ul>
|
||||
<li ng-repeat="feed in node.feeds" ng-mouseenter="hovered=feed" ng-mouseleave="hovered=null">
|
||||
<li ng-repeat="feed in node.feeds" ng-mouseenter="hovered=feed" ng-mouseleave="hovered=null" ng-class="{error: feed.message}">
|
||||
<div class="dropdown pull-right" ng-show="hovered==feed">
|
||||
<a dropdown-toggle class="pull-right feed-menu-icon"><i class="icon icon-chevron-down" ng-class="{error: feed.message}"></i> </a>
|
||||
<a dropdown-toggle class="pull-right feed-menu-icon"><i class="icon icon-chevron-down"></i> </a>
|
||||
<ul class="dropdown-menu">
|
||||
<li>
|
||||
<a ng-click="edit(feed)">Edit</a>
|
||||
|
||||
@@ -106,6 +106,7 @@ module.controller('FeedListCtrl', function($scope, $stateParams, $http, $route,
|
||||
$scope.selectedId = $stateParams._id;
|
||||
|
||||
$scope.name = null;
|
||||
$scope.message = null;
|
||||
$scope.entries = [];
|
||||
|
||||
$scope.settingsService = SettingsService;
|
||||
@@ -144,6 +145,7 @@ module.controller('FeedListCtrl', function($scope, $stateParams, $http, $route,
|
||||
$scope.entries.push(data.entries[i]);
|
||||
}
|
||||
$scope.name = data.name;
|
||||
$scope.message = data.message;
|
||||
$scope.busy = false;
|
||||
$scope.hasMore = data.entries.length == limit;
|
||||
});
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
<div ng-bind-html-unsafe="entry.content"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="no-entries" ng-show="entries.length.name && entries.length == 0 && !busy">"{{name}}" has no unread items.</div>
|
||||
<div class="no-entries" ng-show="!message && name && entries.length == 0 && !busy">"{{name}}" has no unread items.</div>
|
||||
<div ng-show="message">Error while loading this feed : {{message}}</div>
|
||||
</div>
|
||||
</div>
|
||||
Reference in New Issue
Block a user