diff --git a/README.md b/README.md index 7aca8c7..bcc915c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # prerender-java +[![Maven Central](https://img.shields.io/maven-central/v/io.prerender/prerender-java)](https://central.sonatype.com/artifact/io.prerender/prerender-java) + Jakarta Servlet Filter for [Prerender.io](https://prerender.io). Intercepts requests from bots and crawlers and serves prerendered HTML, so your JavaScript-rendered app is fully indexable by search engines and social media scrapers. Compatible with any **Jakarta EE** application server — Tomcat 10+, Jetty 11+, Spring Boot 3+, Quarkus, Micronaut. diff --git a/pom.xml b/pom.xml index 1ac460d..4017298 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ prerender-java Jakarta Servlet Filter for prerendering JavaScript-rendered pages via Prerender.io - https://github.com/prerender/integrations + https://github.com/prerender/java @@ -20,10 +20,19 @@ + + + Prerender.io + support@prerender.io + Prerender.io + https://prerender.io + + + - scm:git:git@github.com:prerender/integrations.git - scm:git:git@github.com:prerender/integrations.git - https://github.com/prerender/integrations + scm:git:git@github.com:prerender/java.git + scm:git:git@github.com:prerender/java.git + https://github.com/prerender/java @@ -79,6 +88,55 @@ maven-surefire-plugin 3.2.5 + + org.apache.maven.plugins + maven-source-plugin + 3.3.1 + + + attach-sources + jar-no-fork + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.6.3 + + + attach-javadocs + jar + + + + + org.apache.maven.plugins + maven-gpg-plugin + 3.2.4 + + + sign-artifacts + verify + sign + + + + + --pinentry-mode + loopback + + + + + org.sonatype.central + central-publishing-maven-plugin + 0.6.0 + true + + central + + diff --git a/src/main/java/io/prerender/PrerenderConfig.java b/src/main/java/io/prerender/PrerenderConfig.java index 5a85c97..94180a2 100644 --- a/src/main/java/io/prerender/PrerenderConfig.java +++ b/src/main/java/io/prerender/PrerenderConfig.java @@ -9,7 +9,8 @@ class PrerenderConfig { "facebookexternalhit", "twitterbot", "rogerbot", "linkedinbot", "embedly", "quora link preview", "showyoubot", "outbrain", "pinterest", "slackbot", "w3c_validator", "perplexity", - "oai-searchbot", "chatgpt-user", "gptbot", "claudebot", "amazonbot" + "oai-searchbot", "chatgpt-user", "gptbot", "claudebot", "amazonbot", + "iframely" ); static final List EXTENSIONS_TO_IGNORE = List.of( @@ -17,7 +18,8 @@ class PrerenderConfig { ".pdf", ".doc", ".txt", ".ico", ".rss", ".zip", ".mp3", ".rar", ".exe", ".wmv", ".avi", ".ppt", ".mpg", ".mpeg", ".tif", ".wav", ".mov", ".psd", ".ai", ".xls", ".mp4", ".m4a", ".swf", ".dat", - ".dmg", ".iso", ".flv", ".m4v", ".torrent", ".ttf", ".woff", ".svg" + ".dmg", ".iso", ".flv", ".m4v", ".torrent", ".ttf", ".woff", ".svg", + ".woff2", ".otf", ".eot", ".webp", ".avif", ".webmanifest" ); private static final String DEFAULT_SERVICE_URL = "https://service.prerender.io/"; diff --git a/src/test/java/io/prerender/PrerenderFilterTest.java b/src/test/java/io/prerender/PrerenderFilterTest.java index 3cd41ff..7c64ab8 100644 --- a/src/test/java/io/prerender/PrerenderFilterTest.java +++ b/src/test/java/io/prerender/PrerenderFilterTest.java @@ -96,6 +96,17 @@ void botRequest_staticAsset_passesThrough() throws Exception { verify(response, never()).setStatus(anyInt()); } + @Test + void botRequest_fontAsset_passesThrough() throws Exception { + when(request.getMethod()).thenReturn("GET"); + when(request.getRequestURI()).thenReturn("/fonts/inter.woff2"); + + filter.doFilter(request, response, chain); + + verify(chain).doFilter(request, response); + verify(response, never()).setStatus(anyInt()); + } + @Test void escapedFragment_triggersPrerender() throws Exception { wireMock.stubFor(get(anyUrl())