Skip to content

Commit b49b585

Browse files
committed
stop using AbstractUrlBuilderStrategy. use URLEncoder instead
1 parent af4c0d6 commit b49b585

File tree

2 files changed

+20
-12
lines changed

2 files changed

+20
-12
lines changed

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

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.io.UnsupportedEncodingException;
44
import java.net.URI;
55
import java.net.URLDecoder;
6+
import java.net.URLEncoder;
67
import java.security.MessageDigest;
78
import java.security.NoSuchAlgorithmException;
89
import java.security.SecureRandom;
@@ -190,12 +191,7 @@ public String privateDownload(String publicId, String format, Map<String, Object
190191
params.put("type", options.get("type"));
191192
params.put("timestamp", new Long(System.currentTimeMillis() / 1000L).toString());
192193
signRequest(params, options);
193-
AbstractUrlBuilderStrategy builder= urlBuilderStrategy.init(cloudinaryApiUrl("download", options));
194-
195-
for (Map.Entry<String, Object> param : params.entrySet()) {
196-
builder.addParam(param.getKey(), param.getValue().toString());
197-
}
198-
return builder.url();
194+
return buildUrl(cloudinaryApiUrl("download", options), params);
199195
}
200196

201197
public String zipDownload(String tag, Map<String, Object> options) throws Exception {
@@ -211,11 +207,23 @@ public String zipDownload(String tag, Map<String, Object> options) throws Except
211207
}
212208
params.put("transformation", transformation);
213209
signRequest(params, options);
214-
AbstractUrlBuilderStrategy builder= urlBuilderStrategy.init(cloudinaryApiUrl("download_tag.zip", options));
210+
return buildUrl(cloudinaryApiUrl("download_tag.zip", options), params);
211+
}
212+
213+
private String buildUrl(String base, Map<String, Object> params) throws UnsupportedEncodingException {
214+
StringBuilder urlBuilder = new StringBuilder();
215+
urlBuilder.append(base);
216+
if (!params.isEmpty()) {
217+
urlBuilder.append("?");
218+
}
219+
boolean first = true;
215220
for (Map.Entry<String, Object> param : params.entrySet()) {
216-
builder.addParam(param.getKey(), param.getValue().toString());
221+
if (!first) urlBuilder.append("&");
222+
urlBuilder.append(param.getKey()).append("=").append(
223+
URLEncoder.encode(param.getValue().toString(), "UTF-8"));
224+
first = false;
217225
}
218-
return builder.url();
226+
return urlBuilder.toString();
219227
}
220228

221229
protected Map parseConfigUrl(String cloudinaryUrl) {

cloudinary-test-common/src/main/java/com/cloudinary/test/AbstractCloudinaryTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -402,10 +402,10 @@ public void testShorten() {
402402
@SuppressWarnings("unchecked")
403403
@Test
404404
public void testPrivateDownload() throws Exception {
405-
String url = cloudinary.privateDownload("img", "jpg", ObjectUtils.emptyMap());
405+
String url = cloudinary.privateDownload("imgÿ=&é", "jpg", ObjectUtils.emptyMap());
406406
URI uri = new URI(url);
407407
Map<String, String> parameters = getUrlParameters(uri);
408-
assertEquals("img", parameters.get("public_id"));
408+
assertEquals("imgÿ=&é", parameters.get("public_id"));
409409
assertEquals("jpg", parameters.get("format"));
410410
assertEquals("a", parameters.get("api_key"));
411411
assertEquals("/v1_1/test123/image/download", uri.getPath());
@@ -577,7 +577,7 @@ public void testUtils() {
577577

578578
public static Map<String, String> getUrlParameters(URI uri) throws UnsupportedEncodingException {
579579
Map<String, String> params = new HashMap<String, String>();
580-
for (String param : uri.getQuery().split("&")) {
580+
for (String param : uri.getRawQuery().split("&")) {
581581
String pair[] = param.split("=");
582582
String key = URLDecoder.decode(pair[0], "UTF-8");
583583
String value = "";

0 commit comments

Comments
 (0)