package water.ga;
import water.util.Log;
import static water.ga.GaUtils.appendSystemProperty;
import static water.ga.GaUtils.isEmpty;
/**
* Default request parameter discoverer. Discovers following parameters.
* <ul>
* <li>Creates User Agent as java/1.6.0_45-b06/Sun Microsystems Inc./Java HotSpot(TM) 64-Bit Server VM/Windows 7/6.1/amd64</li>
* <li>User Language, and Country</li>
* <li>File Encoding</li>
* </ul>
*
* @author Santhosh Kumar
*
* This copy of google-analytics-java is a back port of version 1.1.1 of the library.
* This backport removes the slf4j dependency, and modifies the code to work with the
* 4.1 version of the Apache http client library.
*
* Original sources can be found at https://github.com/brsanthu/google-analytics-java.
* All copyrights retained by original authors.
*/
public class DefaultRequestParameterDiscoverer implements RequestParameterDiscoverer {
@Override
public DefaultRequest discoverParameters(GoogleAnalyticsConfig config, DefaultRequest request) {
try {
if (isEmpty(config.getUserAgent())) {
config.setUserAgent(getUserAgentString());
}
if (isEmpty(request.userLanguage())) {
String region = System.getProperty("user.region");
if (isEmpty(region)) {
region = System.getProperty("user.country");
}
request.userLanguage(System.getProperty("user.language") + "-" + region);
}
if (isEmpty(request.documentEncoding())) {
request.documentEncoding(System.getProperty("file.encoding"));
}
} catch (Exception e) {
Log.warn("Exception while deriving the System properties for request " + request);
}
return request;
}
protected String getUserAgentString() {
StringBuilder sb = new StringBuilder("java");
appendSystemProperty(sb, "java.runtime.version");
appendSystemProperty(sb, "java.specification.vendor");
appendSystemProperty(sb, "java.vm.name");
appendSystemProperty(sb, "os.name");
appendSystemProperty(sb, "os.version");
appendSystemProperty(sb, "os.arch");
return sb.toString();
}
}