Skip to content

Commit 2d8c1eb

Browse files
committed
Add analytics support to url-gen
1 parent df7b3cc commit 2d8c1eb

File tree

4 files changed

+35
-0
lines changed

4 files changed

+35
-0
lines changed

cloudinary-core/src/main/java/com/cloudinary/Cloudinary.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.cloudinary.strategies.AbstractApiStrategy;
66
import com.cloudinary.strategies.AbstractUploaderStrategy;
77
import com.cloudinary.strategies.StrategyLoader;
8+
import com.cloudinary.utils.AnalyticsUtils;
89
import com.cloudinary.utils.ObjectUtils;
910
import com.cloudinary.utils.StringUtils;
1011

@@ -153,6 +154,14 @@ public void setUserAgent(String prefix, String version){
153154
userAgent = prefix+"/"+ version + " ("+USER_AGENT_PREFIX+ " "+VERSION+") " + USER_AGENT_JAVA_VERSION;
154155
}
155156

157+
/**
158+
* Set the analytics token that will be sent with every URL generate call
159+
* @param token - the analytics token to be set
160+
*/
161+
public void setAnalyticsToken(String token) {
162+
AnalyticsUtils.token = token;
163+
}
164+
156165
/**
157166
* Verifies that Cloudinary notification request is genuine by checking its signature.
158167
*

cloudinary-core/src/main/java/com/cloudinary/Url.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import java.util.regex.Pattern;
1414
import java.util.zip.CRC32;
1515

16+
import com.cloudinary.utils.AnalyticsUtils;
1617
import com.cloudinary.utils.Base64Coder;
1718
import com.cloudinary.utils.ObjectUtils;
1819
import com.cloudinary.utils.StringUtils;
@@ -417,6 +418,9 @@ public String generate(String source) {
417418
} catch (MalformedURLException ignored) {
418419
}
419420
}
421+
if (AnalyticsUtils.token != null) {
422+
url = (new StringBuilder()).append(url).append(AnalyticsUtils.analyticsPrefix).append(AnalyticsUtils.token).toString();
423+
}
420424
return url;
421425
}
422426

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.cloudinary.utils;
2+
3+
public class AnalyticsUtils {
4+
public static String analyticsPrefix = "?_a=";
5+
public static String token = null;
6+
}

cloudinary-core/src/test/java/com/cloudinary/test/CloudinaryTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.cloudinary.*;
44
import com.cloudinary.transformation.*;
5+
import com.cloudinary.utils.AnalyticsUtils;
56
import com.cloudinary.utils.ObjectUtils;
67
import junitparams.JUnitParamsRunner;
78
import junitparams.Parameters;
@@ -1454,4 +1455,19 @@ private void setRandomValue(Random rand, Field field, Object instance) throws Il
14541455
private <T extends Enum<?>> T randomEnum(Class<T> clazz, Random random) {
14551456
return clazz.getEnumConstants()[random.nextInt(clazz.getEnumConstants().length)];
14561457
}
1458+
1459+
@Test
1460+
public void testUrlWithAnalytics() {
1461+
AnalyticsUtils.token = "AFAACAI0";
1462+
String url = cloudinary.url().generate("test");
1463+
assertEquals(url,"http://res.cloudinary.com/test123/image/upload/test?_a=AFAACAI0");
1464+
AnalyticsUtils.token = null;
1465+
}
1466+
1467+
@Test
1468+
public void testUrlWithNoAnalytics() {
1469+
AnalyticsUtils.token = null;
1470+
String url = cloudinary.url().generate("test");
1471+
assertEquals(url,"http://res.cloudinary.com/test123/image/upload/test");
1472+
}
14571473
}

0 commit comments

Comments
 (0)