diff --git a/src/main/app/images/default_favicon.gif b/src/main/app/images/default_favicon.gif deleted file mode 100644 index de44d014..00000000 Binary files a/src/main/app/images/default_favicon.gif and /dev/null differ diff --git a/src/main/java/com/commafeed/backend/service/FeedService.java b/src/main/java/com/commafeed/backend/service/FeedService.java index dbe85094..99fa629b 100644 --- a/src/main/java/com/commafeed/backend/service/FeedService.java +++ b/src/main/java/com/commafeed/backend/service/FeedService.java @@ -1,27 +1,40 @@ package com.commafeed.backend.service; +import java.io.IOException; import java.util.Date; import java.util.Set; import javax.inject.Inject; import javax.inject.Singleton; -import lombok.RequiredArgsConstructor; - import org.apache.commons.codec.digest.DigestUtils; +import org.apache.commons.io.IOUtils; import com.commafeed.backend.dao.FeedDAO; import com.commafeed.backend.favicon.AbstractFaviconFetcher; import com.commafeed.backend.feed.FeedUtils; import com.commafeed.backend.model.Feed; -@RequiredArgsConstructor(onConstructor = @__({ @Inject })) @Singleton public class FeedService { private final FeedDAO feedDAO; private final Set faviconFetchers; + private byte[] defaultFavicon; + + @Inject + public FeedService(FeedDAO feedDAO, Set faviconFetchers) { + this.feedDAO = feedDAO; + this.faviconFetchers = faviconFetchers; + + try { + defaultFavicon = IOUtils.toByteArray(getClass().getResource("/images/default_favicon.ico")); + } catch (IOException e) { + throw new RuntimeException("could not load default favicon", e); + } + } + public synchronized Feed findOrCreate(String url) { String normalized = FeedUtils.normalizeURL(url); Feed feed = feedDAO.findByUrl(normalized); @@ -46,6 +59,9 @@ public class FeedService { break; } } + if (icon == null) { + icon = defaultFavicon; + } return icon; } diff --git a/src/main/java/com/commafeed/frontend/resource/FeedREST.java b/src/main/java/com/commafeed/frontend/resource/FeedREST.java index d7038fa7..7dc5cbba 100644 --- a/src/main/java/com/commafeed/frontend/resource/FeedREST.java +++ b/src/main/java/com/commafeed/frontend/resource/FeedREST.java @@ -324,13 +324,7 @@ public class FeedREST { Feed feed = subscription.getFeed(); byte[] icon = feedService.fetchFavicon(feed); - ResponseBuilder builder = null; - if (icon == null) { - String baseUrl = FeedUtils.removeTrailingSlash(config.getApplicationSettings().getPublicUrl()); - builder = Response.status(Status.MOVED_PERMANENTLY).location(URI.create(baseUrl + "/images/default_favicon.gif")); - } else { - builder = Response.ok(icon, "image/x-icon"); - } + ResponseBuilder builder = Response.ok(icon, "image/x-icon"); CacheControl cacheControl = new CacheControl(); cacheControl.setMaxAge(2592000); diff --git a/src/main/resources/images/default_favicon.ico b/src/main/resources/images/default_favicon.ico new file mode 100644 index 00000000..f2b63c26 Binary files /dev/null and b/src/main/resources/images/default_favicon.ico differ