re-implement google analytics

This commit is contained in:
Athou
2014-08-11 15:11:01 +02:00
parent dd3455d273
commit e62c7141af
5 changed files with 62 additions and 4 deletions

View File

@@ -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<CommaFeedConfiguration> {
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();

View File

@@ -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);
}
}
}