Skip to content

Commit 38ff6db

Browse files
authored
Add function to get resources by asset folder
1 parent 0d996e2 commit 38ff6db

File tree

4 files changed

+36
-0
lines changed

4 files changed

+36
-0
lines changed

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,14 @@ public ApiResponse resourcesByAssetIDs(Iterable<String> assetIds, Map options) t
129129
return response;
130130
}
131131

132+
public ApiResponse resourcesByAssetFolder(String assetFolder, Map options) throws Exception {
133+
if (options == null) options = ObjectUtils.emptyMap();
134+
Map params = ObjectUtils.only(options, "next_cursor", "direction", "max_results", "tags", "context", "moderations");
135+
params.put("asset_folder", assetFolder);
136+
ApiResponse response = callApi(HttpMethod.GET, Arrays.asList("resources/by_asset_folder"), params, options);
137+
return response;
138+
}
139+
132140
public ApiResponse resourcesByIds(Iterable<String> publicIds, Map options) throws Exception {
133141
if (options == null) options = ObjectUtils.emptyMap();
134142
String resourceType = ObjectUtils.asString(options.get("resource_type"), "image");

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.cloudinary.api.ApiResponse;
55
import com.cloudinary.api.exceptions.BadRequest;
66
import com.cloudinary.api.exceptions.NotFound;
7+
import com.cloudinary.test.helpers.Feature;
78
import com.cloudinary.test.rules.RetryRule;
89
import com.cloudinary.transformation.TextLayer;
910
import com.cloudinary.utils.ObjectUtils;
@@ -52,6 +53,7 @@ abstract public class AbstractApiTest extends MockableTest {
5253
private static final String CUSTOM_USER_AGENT_VERSION = "9.9.9";
5354
private static String assetId1;
5455
private static String assetId2;
56+
private static String assetId3;
5557

5658
private static final int SLEEP_TIMEOUT = 5000;
5759

@@ -77,6 +79,8 @@ public static void setUpClass() throws IOException {
7779
assetId2 = cloudinary.uploader().upload(SRC_TEST_IMAGE, options).get("asset_id").toString();
7880
options.remove("public_id");
7981

82+
assetId3 = cloudinary.uploader().upload(SRC_TEST_IMAGE, ObjectUtils.asMap("asset_folder", "test_asset_folder")).get("public_id").toString();
83+
8084
options.put("eager", Collections.singletonList(UPDATE_TRANSFORMATION));
8185
cloudinary.uploader().upload(SRC_TEST_IMAGE, options);
8286

@@ -292,6 +296,14 @@ public void testResourceByAssetId() throws Exception {
292296
assertEquals(API_TEST, result.get("public_id").toString());
293297
}
294298

299+
@Test
300+
public void testResourceByAssetFolder() throws Exception {
301+
if (MockableTest.shouldTestFeature(Feature.DYNAMIC_FOLDERS)) {
302+
Map result = api.resourcesByAssetFolder("test_asset_folder", ObjectUtils.asMap("tags", true, "context", true));
303+
assertNotNull(findByAttr((List<Map>) result.get("resources"), "public_id", assetId3));
304+
}
305+
}
306+
295307
@Test
296308
public void testResourcesByPublicIds() throws Exception {
297309
// should allow listing resources by public ids

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

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

33
import com.cloudinary.Cloudinary;
4+
import com.cloudinary.test.helpers.Feature;
45
import com.cloudinary.utils.ObjectUtils;
56
import com.cloudinary.utils.StringUtils;
67

@@ -58,4 +59,13 @@ private static List<String> getEnabledAddons() {
5859

5960
return Arrays.asList(envAddons.split(","));
6061
}
62+
63+
protected static boolean shouldTestFeature(String feature) {
64+
String sdkFeatures = System.getenv()
65+
.getOrDefault("CLD_TEST_FEATURES", "")
66+
.toLowerCase()
67+
.replaceAll("\\s", "");
68+
List<String> sdkFeaturesList = Arrays.asList(sdkFeatures.split(","));
69+
return sdkFeatures.contains(feature.toLowerCase()) || (sdkFeaturesList.size() == 1 && sdkFeaturesList.get(0).equalsIgnoreCase(Feature.ALL));
70+
}
6171
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.cloudinary.test.helpers;
2+
3+
public class Feature {
4+
public static final String ALL = "all";
5+
public static final String DYNAMIC_FOLDERS = "dynamic_folders";
6+
}

0 commit comments

Comments
 (0)