Skip to content

Commit 5fe2d92

Browse files
committed
Add deleteByToken to Uploader.
1 parent 03913e9 commit 5fe2d92

File tree

7 files changed

+38
-7
lines changed

7 files changed

+38
-7
lines changed

cloudinary-android/src/main/java/com/cloudinary/android/UploaderStrategy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public Map callApi(String action, Map<String, Object> params, Map options, Objec
4545
}
4646
}
4747

48-
String apiUrl = this.cloudinary().cloudinaryApiUrl(action, options);
48+
String apiUrl = buildUploadUrl(action, options);
4949
MultipartCallback multipartCallback;
5050
if (progressCallback == null) {
5151
multipartCallback = null;

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public Map uploadLarge(Object file, Map options, int bufferSize) throws IOExcept
109109
return uploadLarge(file, options, bufferSize, null);
110110
}
111111

112-
public Map uploadLarge(Object file, Map options, int bufferSize, ProgressCallback progressCallback) throws IOException {
112+
public Map uploadLarge(Object file, Map options, int bufferSize, ProgressCallback progressCallback) throws IOException {
113113
InputStream input;
114114
long length = -1;
115115
if (file instanceof InputStream) {
@@ -510,4 +510,7 @@ public String imageUploadTag(String field, Map options, Map<String, Object> html
510510
return builder.toString();
511511
}
512512

513+
public Map deleteByToken(String token) throws Exception {
514+
return callApi("delete_by_token", ObjectUtils.asMap("token", token), ObjectUtils.emptyMap(), null);
515+
}
513516
}

cloudinary-core/src/main/java/com/cloudinary/strategies/AbstractUploaderStrategy.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import com.cloudinary.Cloudinary;
77
import com.cloudinary.ProgressCallback;
88
import com.cloudinary.Uploader;
9+
import com.cloudinary.utils.ObjectUtils;
10+
import com.cloudinary.utils.StringUtils;
911

1012
public abstract class AbstractUploaderStrategy {
1113
protected Uploader uploader;
@@ -19,9 +21,25 @@ public Cloudinary cloudinary() {
1921
}
2022

2123
@SuppressWarnings("rawtypes")
22-
public Map callApi(String action, Map<String, Object> params, Map options, Object file) throws IOException{
24+
public Map callApi(String action, Map<String, Object> params, Map options, Object file) throws IOException {
2325
return callApi(action, params, options, file, null);
2426
}
2527

2628
public abstract Map callApi(String action, Map<String, Object> params, Map options, Object file, ProgressCallback progressCallback) throws IOException;
27-
}
29+
30+
protected String buildUploadUrl(String action, Map options) {
31+
String cloudinary = ObjectUtils.asString(options.get("upload_prefix"),
32+
ObjectUtils.asString(uploader.cloudinary().config.uploadPrefix, "https://api.cloudinary.com"));
33+
String cloud_name = ObjectUtils.asString(options.get("cloud_name"), ObjectUtils.asString(uploader.cloudinary().config.cloudName));
34+
if (cloud_name == null)
35+
throw new IllegalArgumentException("Must supply cloud_name in tag or in configuration");
36+
37+
if (action.equals("delete_by_token")) {
38+
// the only method (so far) that doesn't need resource_type
39+
return StringUtils.join(new String[]{cloudinary, "v1_1", cloud_name, action}, "/");
40+
} else {
41+
String resource_type = ObjectUtils.asString(options.get("resource_type"), "image");
42+
return StringUtils.join(new String[]{cloudinary, "v1_1", cloud_name, resource_type, action}, "/");
43+
}
44+
}
45+
}

cloudinary-http42/src/main/java/com/cloudinary/http42/UploaderStrategy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public Map callApi(String action, Map<String, Object> params, Map options, Objec
5050
Util.clearEmpty(params);
5151
}
5252

53-
String apiUrl = uploader.cloudinary().cloudinaryApiUrl(action, options);
53+
String apiUrl = buildUploadUrl(action, options);
5454

5555
ClientConnectionManager connectionManager = (ClientConnectionManager) this.uploader.cloudinary().config.properties.get("connectionManager");
5656
HttpClient client = new DefaultHttpClient(connectionManager);

cloudinary-http43/src/main/java/com/cloudinary/http43/UploaderStrategy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public Map callApi(String action, Map<String, Object> params, Map options, Objec
7373
Util.clearEmpty(params);
7474
}
7575

76-
String apiUrl = uploader.cloudinary().cloudinaryApiUrl(action, options);
76+
String apiUrl = buildUploadUrl(action, options);
7777

7878
HttpPost postMethod = new HttpPost(apiUrl);
7979
ApiUtils.setTimeouts(postMethod, options);

cloudinary-http44/src/main/java/com/cloudinary/http44/UploaderStrategy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public Map callApi(String action, Map<String, Object> params, Map options, Objec
7373
Util.clearEmpty(params);
7474
}
7575

76-
String apiUrl = uploader.cloudinary().cloudinaryApiUrl(action, options);
76+
String apiUrl = buildUploadUrl(action, options);
7777

7878
HttpPost postMethod = new HttpPost(apiUrl);
7979
ApiUtils.setTimeouts(postMethod, options);

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,16 @@ public void testUtf8Upload() throws IOException {
7878
assertEquals(result.get("signature"), expected_signature);
7979
}
8080

81+
@Test
82+
public void testDeleteByToken() throws Exception {
83+
Map options = ObjectUtils.asMap("return_delete_token", true, "tags", new String[]{SDK_TEST_TAG, uniqueTag});
84+
Map res = cloudinary.uploader().upload(SRC_TEST_IMAGE, options);
85+
String token = (String) res.get("delete_token");
86+
res = cloudinary.uploader().deleteByToken(token);
87+
assertNotNull(res);
88+
assertEquals("ok", res.get("result"));
89+
}
90+
8191
@Test
8292
public void testUpload() throws IOException {
8393
Map result = cloudinary.uploader().upload(SRC_TEST_IMAGE, asMap("colors", true, "tags", SDK_TEST_TAG));

0 commit comments

Comments
 (0)