Skip to content

Commit b650f8e

Browse files
committed
Add support to analytics if query params already exist
1 parent 2d8c1eb commit b650f8e

File tree

4 files changed

+30
-1
lines changed

4 files changed

+30
-1
lines changed

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,9 @@ public String generate(String source) {
419419
}
420420
}
421421
if (AnalyticsUtils.token != null) {
422-
url = (new StringBuilder()).append(url).append(AnalyticsUtils.analyticsPrefix).append(AnalyticsUtils.token).toString();
422+
if(!AnalyticsUtils.checkIfQueryParamExist(url)) {
423+
url = (new StringBuilder()).append(url).append(AnalyticsUtils.analyticsPrefix).append(AnalyticsUtils.token).toString();
424+
}
423425
}
424426
return url;
425427
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,21 @@
11
package com.cloudinary.utils;
22

3+
import java.net.MalformedURLException;
4+
import java.net.URL;
5+
36
public class AnalyticsUtils {
47
public static String analyticsPrefix = "?_a=";
58
public static String token = null;
9+
10+
public static Boolean checkIfQueryParamExist(String urlString) {
11+
try {
12+
URL url = new URL(urlString);
13+
if (url.getQuery() == null) {
14+
return false;
15+
}
16+
} catch (MalformedURLException e) {
17+
return true;
18+
}
19+
return true;
20+
}
621
}

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.cloudinary;
22

3+
import com.cloudinary.utils.AnalyticsUtils;
34
import org.hamcrest.Matchers;
45
import org.junit.Before;
56
import org.junit.Rule;
@@ -92,6 +93,15 @@ public void testAuthenticatedUrl() {
9293

9394
}
9495

96+
@Test
97+
public void testUrlAnalyticsWithQueryParams() {
98+
cloudinary.config.privateCdn = true;
99+
String url = cloudinary.url().signed(true).type("authenticated").generate("test");
100+
assertEquals(url,"http://test123-res.cloudinary.com/image/authenticated/test?__cld_token__=st=11111111~exp=11111411~hmac=735a49389a72ac0b90d1a84ac5d43facd1a9047f153b39e914747ef6ed195e53");
101+
AnalyticsUtils.token = null;
102+
cloudinary.config.privateCdn = false;
103+
}
104+
95105
@Test
96106
public void testConfiguration() {
97107
cloudinary = new Cloudinary("cloudinary://a:b@test123?load_strategies=false&auth_token[key]=aabbcc112233&auth_token[duration]=200");

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1470,4 +1470,6 @@ public void testUrlWithNoAnalytics() {
14701470
String url = cloudinary.url().generate("test");
14711471
assertEquals(url,"http://res.cloudinary.com/test123/image/upload/test");
14721472
}
1473+
1474+
14731475
}

0 commit comments

Comments
 (0)