Skip to content

Commit

Permalink
Adding share tracking (#1210)
Browse files Browse the repository at this point in the history
* Adding share tracking
  • Loading branch information
davidjgonzalez authored Jan 24, 2025
1 parent e5c4d0e commit 6a21e82
Showing 1 changed file with 23 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -67,14 +67,16 @@
import org.slf4j.LoggerFactory;

import javax.jcr.RepositoryException;
import javax.jcr.Value;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;

import org.apache.http.client.utils.URIBuilder;

@Component(service = ShareService.class)
@Designate(ocd = EmailShareServiceImpl.Cfg.class)
public class EmailShareServiceImpl implements ShareService {
Expand All @@ -90,6 +92,10 @@ public class EmailShareServiceImpl implements ShareService {
private static final String EMAIL_ADDRESSES = "email";
private static final String EMAIL_ASSET_LINK_LIST_HTML = "assetLinksHTML";

/* Share properties */
private static final String PN_TRACKING_NAME = "trackingName";
private static final String PN_TRACKING_VALUE = "trackingValue";

private transient Cfg cfg;
private transient BundleContext bundleContext;

Expand Down Expand Up @@ -206,14 +212,29 @@ private final String getAssetLinkListHtml(final Config config, final String[] as

// Unescape the URL since externalizer also escapes, resulting in a breaking, double-escaped URLs
// This is required since assetDetailsResolver.getFullUrl(config, asset) performs its own escaping.
url = Text.unescape(url);
url = Text.unescape(url);

if (RequireAem.ServiceType.AUTHOR.equals(requireAem.getServiceType())) {
url = externalizer.authorLink(config.getResourceResolver(), url);
} else {
url = externalizer.externalLink(config.getResourceResolver(), cfg.externalizerDomain(), url);
}

String trackingName = config.getProperties().get(PN_TRACKING_NAME, String.class);
String trackingValue = config.getProperties().get(PN_TRACKING_VALUE, String.class);

try {
if (!StringUtils.isAnyBlank(trackingName, trackingValue)) {
URIBuilder uriBuilder = new URIBuilder(url);
uriBuilder.setParameter(trackingName, trackingValue);
url = uriBuilder.build().toString();
}
} catch (URISyntaxException e) {
if (log.isWarnEnabled()) {
log.warn("Unable to part [ {} ] to a valid URL for use in a share e-mail.", url);
}
}

sb.append("<li><a href=\"");
sb.append(url);
sb.append("\">");
Expand Down

0 comments on commit 6a21e82

Please sign in to comment.