Skip to content

Commit

Permalink
refactor: Incorporating PR comments
Browse files Browse the repository at this point in the history
  • Loading branch information
rottebds committed Aug 8, 2019
1 parent 7a85b40 commit e69fb53
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 57 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.function.Consumer;
import java.util.stream.Collectors;

import org.apache.commons.lang3.StringUtils;
Expand Down Expand Up @@ -59,7 +57,7 @@ public HttpPost createRequest(final PhoneHomeRequestBody phoneHomeRequestBody, f
}

public HttpPost createRequest(final PhoneHomeRequestBody phoneHomeRequestBody, final String url, final String trackingId) throws UnsupportedEncodingException {
final RequestTransformer transformer = new RequestTransformer(trackingId, phoneHomeRequestBody);
final GoogleAnalyticsRequestTransformer transformer = new GoogleAnalyticsRequestTransformer(gson, trackingId, phoneHomeRequestBody);
final List<NameValuePair> parameters = transformer.getParameters();
final AbstractHttpEntity entity;
String requestUrl = url;
Expand All @@ -75,7 +73,7 @@ public HttpPost createRequest(final PhoneHomeRequestBody phoneHomeRequestBody, f
entity = new UrlEncodedFormEntity(parameters);
} else {
final String requestString = artifactModules.stream()
.map(module -> addModuleMetadata(parameters, module))
.map(module -> createModuleParameters(parameters, module))
.map(moduleParameters -> URLEncodedUtils.format(moduleParameters, HTTP.DEF_CONTENT_CHARSET.name()))
.collect(Collectors.joining("\n"));

Expand All @@ -99,62 +97,10 @@ public HttpPost createRequest(final String url, final HttpEntity httpEntity) {
return post;
}

private List<NameValuePair> addModuleMetadata(final List<NameValuePair> parameters, final String module) {
private List<NameValuePair> createModuleParameters(final List<NameValuePair> parameters, final String module) {
final NameValuePair parameter = new BasicNameValuePair(GoogleAnalyticsConstants.MODULE_ID, module);
final List<NameValuePair> newParameters = new ArrayList<>(parameters);
newParameters.add(parameter);
return newParameters;
}

private class RequestTransformer {
final List<NameValuePair> parameters = new ArrayList<>();
final PhoneHomeRequestBody phoneHomeRequestBody;
final String trackingId;
private Consumer<NameValuePair> adder = parameters::add;

public RequestTransformer(final String trackingId, final PhoneHomeRequestBody phoneHomeRequestBody) {
this.phoneHomeRequestBody = phoneHomeRequestBody;
this.trackingId = trackingId;
}

public List<NameValuePair> getParameters() {
addParameter(GoogleAnalyticsConstants.API_VERSION_KEY, "1");
addParameter(GoogleAnalyticsConstants.HIT_TYPE_KEY, "pageview");

String clientId = generateClientId(phoneHomeRequestBody.getCustomerId(), phoneHomeRequestBody.getHostName());
addParameter(GoogleAnalyticsConstants.CLIENT_ID_KEY, clientId);
addParameter(GoogleAnalyticsConstants.TRACKING_ID_KEY, trackingId);
addParameter(GoogleAnalyticsConstants.DOCUMENT_PATH_KEY, "phone-home");

// Phone Home Parameters
addParameter(GoogleAnalyticsConstants.CUSTOMER_ID, phoneHomeRequestBody.getCustomerId());
addParameter(GoogleAnalyticsConstants.HOST_NAME, phoneHomeRequestBody.getHostName());
addParameter(GoogleAnalyticsConstants.ARTIFACT_ID, phoneHomeRequestBody.getArtifactId());
addParameter(GoogleAnalyticsConstants.ARTIFACT_VERSION, phoneHomeRequestBody.getArtifactVersion());
addParameter(GoogleAnalyticsConstants.PRODUCT_ID, phoneHomeRequestBody.getProductId().name());
addParameter(GoogleAnalyticsConstants.PRODUCT_VERSION, phoneHomeRequestBody.getProductVersion());
addParameter(GoogleAnalyticsConstants.META_DATA, gson.toJson(phoneHomeRequestBody.getMetaData()));

return parameters;
}

private void addParameter(final String key, final String value) {
final NameValuePair parameter = new BasicNameValuePair(key, value);
adder.accept(parameter);
}

private String generateClientId(final String customerId, final String hostName) {
final String clientId;
if (!PhoneHomeRequestBody.Builder.UNKNOWN_ID.equals(customerId)) {
clientId = customerId;
} else if (!PhoneHomeRequestBody.Builder.UNKNOWN_ID.equals(hostName)) {
clientId = hostName;
} else {
clientId = PhoneHomeRequestBody.Builder.UNKNOWN_ID;
}

final byte[] bytesFromString = clientId.getBytes();
return UUID.nameUUIDFromBytes(bytesFromString).toString();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package com.synopsys.integration.phonehome.google.analytics;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;

import com.google.gson.Gson;
import com.synopsys.integration.phonehome.PhoneHomeRequestBody;

public class GoogleAnalyticsRequestTransformer {
private final List<NameValuePair> parameters = new ArrayList<>();
private final PhoneHomeRequestBody phoneHomeRequestBody;
private final String trackingId;
private final Gson gson;

public GoogleAnalyticsRequestTransformer(final Gson gson, final String trackingId, final PhoneHomeRequestBody phoneHomeRequestBody) {
this.gson = gson;
this.phoneHomeRequestBody = phoneHomeRequestBody;
this.trackingId = trackingId;
}

public List<NameValuePair> getParameters() {
addParameter(GoogleAnalyticsConstants.API_VERSION_KEY, "1");
addParameter(GoogleAnalyticsConstants.HIT_TYPE_KEY, "pageview");

String clientId = generateClientId(phoneHomeRequestBody.getCustomerId(), phoneHomeRequestBody.getHostName());
addParameter(GoogleAnalyticsConstants.CLIENT_ID_KEY, clientId);
addParameter(GoogleAnalyticsConstants.TRACKING_ID_KEY, trackingId);
addParameter(GoogleAnalyticsConstants.DOCUMENT_PATH_KEY, "phone-home");

// Phone Home Parameters
addParameter(GoogleAnalyticsConstants.CUSTOMER_ID, phoneHomeRequestBody.getCustomerId());
addParameter(GoogleAnalyticsConstants.HOST_NAME, phoneHomeRequestBody.getHostName());
addParameter(GoogleAnalyticsConstants.ARTIFACT_ID, phoneHomeRequestBody.getArtifactId());
addParameter(GoogleAnalyticsConstants.ARTIFACT_VERSION, phoneHomeRequestBody.getArtifactVersion());
addParameter(GoogleAnalyticsConstants.PRODUCT_ID, phoneHomeRequestBody.getProductId().name());
addParameter(GoogleAnalyticsConstants.PRODUCT_VERSION, phoneHomeRequestBody.getProductVersion());
addParameter(GoogleAnalyticsConstants.META_DATA, gson.toJson(phoneHomeRequestBody.getMetaData()));

return parameters;
}

private void addParameter(final String key, final String value) {
final NameValuePair parameter = new BasicNameValuePair(key, value);
parameters.add(parameter);
}

private String generateClientId(final String customerId, final String hostName) {
final String clientId;
if (!PhoneHomeRequestBody.Builder.UNKNOWN_ID.equals(customerId)) {
clientId = customerId;
} else if (!PhoneHomeRequestBody.Builder.UNKNOWN_ID.equals(hostName)) {
clientId = hostName;
} else {
clientId = PhoneHomeRequestBody.Builder.UNKNOWN_ID;
}

final byte[] bytesFromString = clientId.getBytes();
return UUID.nameUUIDFromBytes(bytesFromString).toString();
}
}

0 comments on commit e69fb53

Please sign in to comment.