if (sAnalytics == null) { Timber.d("App tracking id 'tid' = %s", getAnalyticsTag(context)); GoogleAnalyticsConfig gaConfig = new GoogleAnalyticsConfig() .setBatchingEnabled(true) .setSamplePercentage(getAnalyticsSamplePercentage(context)) .setBatchSize(1); // until this handles application termination we will lose hits if batch>1 sAnalytics = GoogleAnalytics.builder() .withTrackingId(getAnalyticsTag(context))
/** * Allow users to enable or disable analytics * * @param optIn true allows collection of analytics information */ synchronized private static void setOptIn(boolean optIn) { Timber.i("setOptIn(): from %s to %s", sOptIn, optIn); sOptIn = optIn; sAnalytics.flush(); sAnalytics.getConfig().setEnabled(optIn); sAnalytics.performSamplingElection(); Timber.d("setOptIn() optIn / sAnalytics.config().enabled(): %s/%s", sOptIn, sAnalytics.getConfig().isEnabled()); }
protected CloseableHttpClient createHttpClient(GoogleAnalyticsConfig config) { PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(); connManager.setDefaultMaxPerRoute(Math.max(config.getMaxHttpConnectionsPerRoute(), 1)); HttpClientBuilder builder = HttpClients.custom().setConnectionManager(connManager); if (isNotEmpty(config.getUserAgent())) { builder.setUserAgent(config.getUserAgent()); } if (isNotEmpty(config.getProxyHost())) { builder.setProxy(new HttpHost(config.getProxyHost(), config.getProxyPort())); if (isNotEmpty(config.getProxyUserName())) { BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCredentials(new AuthScope(config.getProxyHost(), config.getProxyPort()), new UsernamePasswordCredentials(config.getProxyUserName(), config.getProxyPassword())); builder.setDefaultCredentialsProvider(credentialsProvider); } } return builder.build(); }
public GoogleAnalytics(String trackingId, String appName, String appVersion) { this(new GoogleAnalyticsConfig(), trackingId, appName, appVersion); }
public boolean getEnabled() { return config.isEnabled();}
protected ExecutorService createExecutor() { if (executor != null) { return executor; } return new ThreadPoolExecutor(config.getMinThreads(), config.getMaxThreads(), config.getThreadTimeoutSecs(), TimeUnit.SECONDS, new LinkedBlockingDeque<Runnable>(config.getThreadQueueSize()), createThreadFactory(), new ThreadPoolExecutor.CallerRunsPolicy()); }
@SuppressWarnings({"rawtypes"}) public GoogleAnalyticsResponse post(GoogleAnalyticsRequest request) { GoogleAnalyticsResponse response = new GoogleAnalyticsResponse(); if (!config.isEnabled()) { return response; HttpPost httpPost = new HttpPost(config.getUrl()); try { httpPost.setEntity(new UrlEncodedFormEntity(postParms, "UTF-8")); } catch (IOException e) {/*consume quietly*/} if (config.isGatherStats()) { gatherStats(request);
public GoogleAnalytics(GoogleAnalyticsConfig config, DefaultRequest defaultRequest) { if (config.isDiscoverRequestParameters() && config.getRequestParameterDiscoverer() != null) { config.getRequestParameterDiscoverer().discoverParameters(config, defaultRequest); } this.config = config; this.defaultRequest = defaultRequest; this.defaultRequest.userAgent(config.getUserAgent()); this.httpClient = createHttpClient(config); }
public GoogleAnalytics build() { if (config.isDiscoverRequestParameters()) { RequestParameterDiscoverer discoverer = GaUtils.firstNotNull(config.getRequestParameterDiscoverer(), DefaultRequestParameterDiscoverer.INSTANCE); discoverer.discoverParameters(config, defaultRequest); } return new GoogleAnalyticsImpl(config, defaultRequest, createHttpClient(), createExecutor()); }
@Override public GoogleAnalyticsResponse post(GoogleAnalyticsRequest<?> gaReq) { GoogleAnalyticsResponse response = new GoogleAnalyticsResponse(); if (!config.isEnabled()) { return response; } try { if (config.isBatchingEnabled()) { response = postBatch(gaReq); } else { response = postSingle(gaReq); } } catch (Exception e) { logger.warn("Exception while sending the Google Analytics tracker request " + gaReq, e); } return response; }
protected ThreadFactory createThreadFactory() { return new GoogleAnalyticsThreadFactory(config.getThreadNameFormat()); }
private HttpRequest createHttpRequest(GoogleAnalyticsRequest<?> gaReq) { HttpRequest httpReq = new HttpRequest(config.getUrl()); // Process the parameters processParameters(gaReq, httpReq); // Process custom dimensions processCustomDimensionParameters(gaReq, httpReq); // Process custom metrics processCustomMetricParameters(gaReq, httpReq); return httpReq; }
protected int getDefaultMaxPerRoute(GoogleAnalyticsConfig config) { return Math.max(config.getMaxThreads(), 1); }
protected CloseableHttpClient createHttpClient(GoogleAnalyticsConfig config) { PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(); connManager.setDefaultMaxPerRoute(Math.max(config.getMaxHttpConnectionsPerRoute(), 1)); HttpClientBuilder builder = HttpClients.custom().setConnectionManager(connManager); if (isNotEmpty(config.getUserAgent())) { builder.setUserAgent(config.getUserAgent()); } if (isNotEmpty(config.getProxyHost())) { builder.setProxy(new HttpHost(config.getProxyHost(), config.getProxyPort())); if (isNotEmpty(config.getProxyUserName())) { BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCredentials(new AuthScope(config.getProxyHost(), config.getProxyPort()), new UsernamePasswordCredentials(config.getProxyUserName(), config.getProxyPassword())); builder.setDefaultCredentialsProvider(credentialsProvider); } } return builder.build(); }
public GoogleAnalyticsBuilder withConfig(GoogleAnalyticsConfig config) { this.config = GaUtils.firstNotNull(config, new GoogleAnalyticsConfig()); return this; }
@Override public void ifEnabled(Runnable runnable) { if (!config.isEnabled()) { return; } runnable.run(); }
protected ExecutorService createExecutor() { if (executor != null) { return executor; } return new ThreadPoolExecutor(config.getMinThreads(), config.getMaxThreads(), config.getThreadTimeoutSecs(), TimeUnit.SECONDS, new LinkedBlockingDeque<Runnable>(config.getThreadQueueSize()), createThreadFactory(), new ThreadPoolExecutor.CallerRunsPolicy()); }
public GoogleAnalytics build() { if (config.isDiscoverRequestParameters()) { RequestParameterDiscoverer discoverer = GaUtils.firstNotNull(config.getRequestParameterDiscoverer(), DefaultRequestParameterDiscoverer.INSTANCE); discoverer.discoverParameters(config, defaultRequest); } return new GoogleAnalyticsImpl(config, defaultRequest, createHttpClient(), createExecutor()); }
@Override public GoogleAnalyticsResponse post(GoogleAnalyticsRequest<?> gaReq) { GoogleAnalyticsResponse response = new GoogleAnalyticsResponse(); if (!config.isEnabled()) { return response; } try { if (config.isBatchingEnabled()) { response = postBatch(gaReq); } else { response = postSingle(gaReq); } } catch (Exception e) { logger.warn("Exception while sending the Google Analytics tracker request " + gaReq, e); } return response; }
protected ThreadFactory createThreadFactory() { return new GoogleAnalyticsThreadFactory(config.getThreadNameFormat()); } }