2014-08-08 16:49:02 +02:00
|
|
|
package com.commafeed.backend.service;
|
|
|
|
|
|
|
|
|
|
import java.util.Date;
|
2014-10-26 12:25:44 +01:00
|
|
|
import java.util.Set;
|
2014-08-08 16:49:02 +02:00
|
|
|
|
2014-08-17 14:16:30 +02:00
|
|
|
import javax.inject.Inject;
|
|
|
|
|
import javax.inject.Singleton;
|
|
|
|
|
|
2014-08-08 16:49:02 +02:00
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
|
|
|
|
|
import org.apache.commons.codec.digest.DigestUtils;
|
|
|
|
|
|
|
|
|
|
import com.commafeed.backend.dao.FeedDAO;
|
2014-10-26 12:25:44 +01:00
|
|
|
import com.commafeed.backend.favicon.AbstractFaviconFetcher;
|
2014-08-08 16:49:02 +02:00
|
|
|
import com.commafeed.backend.feed.FeedUtils;
|
|
|
|
|
import com.commafeed.backend.model.Feed;
|
|
|
|
|
|
2014-08-17 14:16:30 +02:00
|
|
|
@RequiredArgsConstructor(onConstructor = @__({ @Inject }))
|
|
|
|
|
@Singleton
|
2014-08-08 16:49:02 +02:00
|
|
|
public class FeedService {
|
|
|
|
|
|
|
|
|
|
private final FeedDAO feedDAO;
|
2014-10-26 12:25:44 +01:00
|
|
|
private final Set<AbstractFaviconFetcher> faviconFetchers;
|
2014-08-08 16:49:02 +02:00
|
|
|
|
|
|
|
|
public synchronized Feed findOrCreate(String url) {
|
|
|
|
|
String normalized = FeedUtils.normalizeURL(url);
|
|
|
|
|
Feed feed = feedDAO.findByUrl(normalized);
|
|
|
|
|
if (feed == null) {
|
|
|
|
|
feed = new Feed();
|
|
|
|
|
feed.setUrl(url);
|
|
|
|
|
feed.setNormalizedUrl(normalized);
|
|
|
|
|
feed.setNormalizedUrlHash(DigestUtils.sha1Hex(normalized));
|
|
|
|
|
feed.setDisabledUntil(new Date(0));
|
|
|
|
|
feedDAO.saveOrUpdate(feed);
|
|
|
|
|
}
|
|
|
|
|
return feed;
|
|
|
|
|
}
|
|
|
|
|
|
2014-10-26 12:25:44 +01:00
|
|
|
public byte[] fetchFavicon(Feed feed) {
|
|
|
|
|
String url = feed.getLink() != null ? feed.getLink() : feed.getUrl();
|
|
|
|
|
|
|
|
|
|
byte[] icon = null;
|
|
|
|
|
for (AbstractFaviconFetcher faviconFetcher : faviconFetchers) {
|
|
|
|
|
icon = faviconFetcher.fetch(url);
|
|
|
|
|
if (icon != null) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return icon;
|
|
|
|
|
}
|
|
|
|
|
|
2014-08-08 16:49:02 +02:00
|
|
|
}
|