Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding share tracking #1210

Merged
merged 2 commits into from
Jan 24, 2025
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ com.adobe.aem.commons.assetshare.util.impl
</goals>
</execution>
</executions>
</plugin>
</plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>8</source><target>8</target></configuration></plugin>
davidjgonzalez marked this conversation as resolved.
Show resolved Hide resolved
<!-- tests are reused from assetshare.core.cloud, therefore create a dedicated artifact, https://maven.apache.org/plugins/maven-jar-plugin/examples/create-test-jar.html -->
</plugins>
</build>
Expand Down
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 @@
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 @@

// 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);

Check warning on line 215 in core/src/main/java/com/adobe/aem/commons/assetshare/components/actions/share/impl/EmailShareServiceImpl.java

View check run for this annotation

Codecov / codecov/patch

core/src/main/java/com/adobe/aem/commons/assetshare/components/actions/share/impl/EmailShareServiceImpl.java#L215

Added line #L215 was not covered by tests

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);

Check warning on line 224 in core/src/main/java/com/adobe/aem/commons/assetshare/components/actions/share/impl/EmailShareServiceImpl.java

View check run for this annotation

Codecov / codecov/patch

core/src/main/java/com/adobe/aem/commons/assetshare/components/actions/share/impl/EmailShareServiceImpl.java#L223-L224

Added lines #L223 - L224 were not covered by tests

try {
if (!StringUtils.isAnyBlank(trackingName, trackingValue)) {
URIBuilder uriBuilder = new URIBuilder(url);
uriBuilder.setParameter(trackingName, trackingValue);
url = uriBuilder.build().toString();

Check warning on line 230 in core/src/main/java/com/adobe/aem/commons/assetshare/components/actions/share/impl/EmailShareServiceImpl.java

View check run for this annotation

Codecov / codecov/patch

core/src/main/java/com/adobe/aem/commons/assetshare/components/actions/share/impl/EmailShareServiceImpl.java#L228-L230

Added lines #L228 - L230 were not covered by tests
}
} catch (URISyntaxException e) {

Check warning on line 232 in core/src/main/java/com/adobe/aem/commons/assetshare/components/actions/share/impl/EmailShareServiceImpl.java

View check run for this annotation

Codecov / codecov/patch

core/src/main/java/com/adobe/aem/commons/assetshare/components/actions/share/impl/EmailShareServiceImpl.java#L232

Added line #L232 was not covered by tests
if (log.isWarnEnabled()) {
log.warn("Unable to part [ {} ] to a valid URL for use in a share e-mail.", url);

Check warning on line 234 in core/src/main/java/com/adobe/aem/commons/assetshare/components/actions/share/impl/EmailShareServiceImpl.java

View check run for this annotation

Codecov / codecov/patch

core/src/main/java/com/adobe/aem/commons/assetshare/components/actions/share/impl/EmailShareServiceImpl.java#L234

Added line #L234 was not covered by tests
}
}

Check warning on line 236 in core/src/main/java/com/adobe/aem/commons/assetshare/components/actions/share/impl/EmailShareServiceImpl.java

View check run for this annotation

Codecov / codecov/patch

core/src/main/java/com/adobe/aem/commons/assetshare/components/actions/share/impl/EmailShareServiceImpl.java#L236

Added line #L236 was not covered by tests

sb.append("<li><a href=\"");
sb.append(url);
sb.append("\">");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,36 @@
</column>
</items>
</tab-3>
<tab-4
jcr:primaryType="nt:unstructured"
jcr:title="Share tracking"
sling:resourceType="granite/ui/components/coral/foundation/fixedcolumns"
margin="{Boolean}true">
<items jcr:primaryType="nt:unstructured">
<column
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/container">
<items jcr:primaryType="nt:unstructured">
<tracking-name
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/form/textfield"
fieldDescription="The URL parameter name to set the tracking value to."
emptyText=""
fieldLabel="Tracking parameter name"
name="./data/trackingName"
required="{Boolean}false"/>
<tracking-value
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/form/textfield"
fieldDescription="The tracking URL parameter value. This same value is used on all share URLs."
emptyText=""
fieldLabel="Tracking parameter value"
name="./data/trackingValue"
required="{Boolean}false"/>
</items>
</column>
</items>
</tab-4>
</items>
</tabs>
</items>
Expand Down
Loading