package com.commafeed.frontend.servlet; import java.io.IOException; import javax.inject.Inject; import javax.inject.Singleton; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; import com.commafeed.CommaFeedConfiguration; @SuppressWarnings("serial") @Singleton public class AnalyticsServlet extends HttpServlet { private final CommaFeedConfiguration config; private final String script; @Inject 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); } } }