diff --git a/gulpfile.js b/gulpfile.js index df7edba9..e7d273fc 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -106,7 +106,8 @@ gulp.task('serve', function() { var next = '^/next(.*)$ http://localhost:8083/next$1 [P]'; var logout = '^/logout$ http://localhost:8083/logout [P]'; var custom_css = '^/custom_css.css$ http://localhost:8083/custom_css.css [P]'; - return [modRewrite([rest, next, logout, custom_css])]; + var analytics = '^/analytics.js http://localhost:8083/analytics.js [P]'; + return [modRewrite([rest, next, logout, custom_css, analytics])]; } }); }); diff --git a/pom.xml b/pom.xml index c07d19d0..58af2440 100644 --- a/pom.xml +++ b/pom.xml @@ -154,9 +154,14 @@ ${dropwizard.version} - io.federecio - dropwizard-swagger - 0.5.1 + io.dropwizard + dropwizard-assets + ${dropwizard.version} + + + com.wordnik + swagger-jaxrs_2.10 + 1.3.2 jsr311-api diff --git a/src/main/app/index.html b/src/main/app/index.html index 513a8a23..b4125318 100644 --- a/src/main/app/index.html +++ b/src/main/app/index.html @@ -74,5 +74,6 @@ + diff --git a/src/main/java/com/commafeed/CommaFeedApplication.java b/src/main/java/com/commafeed/CommaFeedApplication.java index 5eaf4a5b..d065ad36 100644 --- a/src/main/java/com/commafeed/CommaFeedApplication.java +++ b/src/main/java/com/commafeed/CommaFeedApplication.java @@ -77,6 +77,7 @@ import com.commafeed.frontend.resource.FeedREST; import com.commafeed.frontend.resource.PubSubHubbubCallbackREST; import com.commafeed.frontend.resource.ServerREST; import com.commafeed.frontend.resource.UserREST; +import com.commafeed.frontend.servlet.AnalyticsServlet; import com.commafeed.frontend.servlet.CustomCssServlet; import com.commafeed.frontend.servlet.LogoutServlet; import com.commafeed.frontend.servlet.NextUnreadServlet; @@ -208,9 +209,11 @@ public class CommaFeedApplication extends Application { feedCategoryDAO, config); LogoutServlet logoutServlet = new LogoutServlet(config); CustomCssServlet customCssServlet = new CustomCssServlet(sessionFactory, userSettingsDAO, config); + AnalyticsServlet analyticsServlet = new AnalyticsServlet(config); environment.servlets().addServlet("next", nextUnreadServlet).addMapping("/next"); environment.servlets().addServlet("logout", logoutServlet).addMapping("/logout"); environment.servlets().addServlet("customCss", customCssServlet).addMapping("/custom_css.css"); + environment.servlets().addServlet("analytics.js", analyticsServlet).addMapping("/analytics.js"); // Tasks SchedulingService schedulingService = new SchedulingService(); diff --git a/src/main/java/com/commafeed/frontend/servlet/AnalyticsServlet.java b/src/main/java/com/commafeed/frontend/servlet/AnalyticsServlet.java new file mode 100644 index 00000000..f26777b8 --- /dev/null +++ b/src/main/java/com/commafeed/frontend/servlet/AnalyticsServlet.java @@ -0,0 +1,48 @@ +package com.commafeed.frontend.servlet; + +import java.io.IOException; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang.StringUtils; + +import com.commafeed.CommaFeedConfiguration; + +@SuppressWarnings("serial") +public class AnalyticsServlet extends HttpServlet { + + private CommaFeedConfiguration config; + private String script; + + public AnalyticsServlet(CommaFeedConfiguration config) { + this.config = config; + + // @formatter:off + this.script = "(function(i, s, o, g, r, a, m) {" + + "i['GoogleAnalyticsObject'] = r;" + + "i[r] = i[r] || function() {" + + "(i[r].q = i[r].q || []).push(arguments)" + + "}, i[r].l = 1 * new Date();" + + "a = s.createElement(o), m = s.getElementsByTagName(o)[0];" + + "a.async = 1;" + + "a.src = g;" + + "m.parentNode.insertBefore(a, m)" + + "})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');" + + + "ga('create', '" + config.getApplicationSettings().getGoogleAnalyticsTrackingCode() + "');" + + "ga('send', 'pageview');"; + // @formatter:on + } + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + resp.setContentType("text/javascript"); + if (StringUtils.isNotBlank(config.getApplicationSettings().getGoogleAnalyticsTrackingCode())) { + resp.getWriter().write(script); + } + } + +}