Skip to content

Commit d03ca73

Browse files
authored
Add support for folder deletion (#170)
1 parent c187007 commit d03ca73

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -519,6 +519,18 @@ public ApiResponse updateResourcesAccessModeByTag(String accessMode, String tag,
519519
return updateResourcesAccessMode(accessMode, "tag", tag, options);
520520
}
521521

522+
/**
523+
* Delete a folder (must be empty).
524+
* @param folder The full path of the folder to delete
525+
* @param options additional options.
526+
* @return The operation result.
527+
* @throws Exception When the folder isn't empty or doesn't exist.
528+
*/
529+
public ApiResponse deleteFolder(String folder, Map options) throws Exception {
530+
List<String> uri = Arrays.asList("folders", folder);
531+
return callApi(HttpMethod.DELETE, uri, Collections.<String, Object>emptyMap(), options);
532+
}
533+
522534
/**
523535
* Update access mode of one or more resources by publicIds
524536
*

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import java.util.*;
1515

1616
import static com.cloudinary.utils.ObjectUtils.asMap;
17+
import static com.cloudinary.utils.ObjectUtils.emptyMap;
1718
import static org.hamcrest.Matchers.*;
1819
import static org.hamcrest.core.AllOf.allOf;
1920
import static org.hamcrest.core.IsNot.not;
@@ -935,4 +936,17 @@ public void testQualityAnalysis() throws Exception {
935936
ApiResponse result = cloudinary.api().resource(API_TEST, ObjectUtils.asMap("quality_analysis", true));
936937
assertNotNull(result.get("quality_analysis"));
937938
}
939+
940+
@Test(expected = NotFound.class)
941+
public void testDeleteFolder() throws Exception {
942+
String toDelete = "todelete_" + SUFFIX;
943+
Map uploadResult = cloudinary.uploader().upload(SRC_TEST_IMAGE, asMap("tags", UPLOAD_TAGS, "folder", toDelete));
944+
Thread.sleep(5000);
945+
api.deleteResources(Collections.singletonList(uploadResult.get("public_id").toString()), emptyMap());
946+
ApiResponse result = api.deleteFolder(toDelete, emptyMap());
947+
assertTrue(((ArrayList)result.get("deleted")).contains(toDelete));
948+
949+
// should throw exception (folder not found):
950+
api.deleteFolder(cloudinary.randomPublicId(), emptyMap());
951+
}
938952
}

0 commit comments

Comments
 (0)