Skip to content

Commit e47e686

Browse files
authored
Support structured metadata in resources api call
1 parent 046777f commit e47e686

File tree

2 files changed

+46
-4
lines changed

2 files changed

+46
-4
lines changed

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,15 +88,15 @@ public ApiResponse resources(Map options) throws Exception {
8888
if (type != null)
8989
uri.add(type);
9090

91-
ApiResponse response = callApi(HttpMethod.GET, uri, ObjectUtils.only(options, "next_cursor", "direction", "max_results", "prefix", "tags", "context", "moderations", "start_at"), options);
91+
ApiResponse response = callApi(HttpMethod.GET, uri, ObjectUtils.only(options, "next_cursor", "direction", "max_results", "prefix", "tags", "context", "moderations", "start_at", "metadata"), options);
9292
return response;
9393
}
9494

9595
public ApiResponse resourcesByTag(String tag, Map options) throws Exception {
9696
if (options == null) options = ObjectUtils.emptyMap();
9797
String resourceType = ObjectUtils.asString(options.get("resource_type"), "image");
9898

99-
ApiResponse response = callApi(HttpMethod.GET, Arrays.asList("resources", resourceType, "tags", tag), ObjectUtils.only(options, "next_cursor", "direction", "max_results", "tags", "context", "moderations"), options);
99+
ApiResponse response = callApi(HttpMethod.GET, Arrays.asList("resources", resourceType, "tags", tag), ObjectUtils.only(options, "next_cursor", "direction", "max_results", "tags", "context", "moderations", "metadata"), options);
100100
return response;
101101
}
102102

@@ -107,7 +107,7 @@ public ApiResponse resourcesByContext(String key, Map options) throws Exception
107107
public ApiResponse resourcesByContext(String key, String value, Map options) throws Exception {
108108
if (options == null) options = ObjectUtils.emptyMap();
109109
String resourceType = ObjectUtils.asString(options.get("resource_type"), "image");
110-
Map params = ObjectUtils.only(options, "next_cursor", "direction", "max_results", "tags", "context", "moderations");
110+
Map params = ObjectUtils.only(options, "next_cursor", "direction", "max_results", "tags", "context", "moderations", "metadata");
111111
params.put("key", key);
112112
if (StringUtils.isNotBlank(value)) {
113113
params.put("value", value);
@@ -143,7 +143,7 @@ public ApiResponse resourcesByModeration(String kind, String status, Map options
143143
if (options == null) options = ObjectUtils.emptyMap();
144144
String resourceType = ObjectUtils.asString(options.get("resource_type"), "image");
145145

146-
ApiResponse response = callApi(HttpMethod.GET, Arrays.asList("resources", resourceType, "moderations", kind, status), ObjectUtils.only(options, "next_cursor", "direction", "max_results", "tags", "context", "moderations"), options);
146+
ApiResponse response = callApi(HttpMethod.GET, Arrays.asList("resources", resourceType, "moderations", kind, status), ObjectUtils.only(options, "next_cursor", "direction", "max_results", "tags", "context", "moderations", "metadata"), options);
147147
return response;
148148
}
149149

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

Lines changed: 42 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.metadata.StringMetadataField;
78
import com.cloudinary.transformation.TextLayer;
89
import com.cloudinary.utils.ObjectUtils;
910
import org.junit.*;
@@ -367,6 +368,47 @@ public void testDeleteDerivedByTransformation() throws Exception {
367368
assertTrue(derived.size() == 0);
368369
}
369370

371+
@Test
372+
public void testGetResourcesWithMetadata() throws Exception {
373+
String public_id = "api_,withMetadata" + SUFFIX;
374+
String fieldId = MetadataTestHelper.addFieldToAccount(api, MetadataTestHelper.newFieldInstance("some_field" + SUFFIX)).get("external_id").toString();
375+
cloudinary.uploader().upload(SRC_TEST_IMAGE,
376+
ObjectUtils.asMap("public_id", public_id,
377+
"tags", UPLOAD_TAGS,
378+
"metadata", ObjectUtils.asMap(fieldId, "test"),
379+
"moderation", "manual",
380+
"context", ObjectUtils.asMap("name", "value")));
381+
382+
Map result = api.resources(ObjectUtils.asMap("metadata", false));
383+
assertNull(getMetadata(public_id, result));
384+
385+
result = api.resources(ObjectUtils.asMap("metadata", true));
386+
assertNotNull(getMetadata(public_id, result));
387+
388+
result = api.resourcesByTag(UPLOAD_TAGS[0], ObjectUtils.asMap("metadata", true));
389+
assertNotNull(getMetadata(public_id, result));
390+
391+
result = api.resourcesByTag(UPLOAD_TAGS[0], ObjectUtils.asMap("metadata", false));
392+
assertNull(getMetadata(public_id, result));
393+
394+
result = api.resourcesByModeration("manual", "pending", ObjectUtils.asMap("metadata", true));
395+
assertNotNull(getMetadata(public_id, result));
396+
397+
result = api.resourcesByModeration("manual", "pending", ObjectUtils.asMap("metadata", false));
398+
assertNull(getMetadata(public_id, result));
399+
400+
result = api.resourcesByContext("name", "value", ObjectUtils.asMap("metadata", true));
401+
assertNotNull(getMetadata(public_id, result));
402+
403+
result = api.resourcesByContext("name", "value", ObjectUtils.asMap("metadata", false));
404+
assertNull(getMetadata(public_id, result));
405+
}
406+
407+
private Object getMetadata(String public_id, Map result) {
408+
Map resource = findByAttr((List<Map>) result.get("resources"), "public_id", public_id);
409+
return resource.get("metadata");
410+
}
411+
370412
@Test(expected = NotFound.class)
371413
public void test09DeleteResources() throws Exception {
372414
// should allow deleting resources

0 commit comments

Comments
 (0)