Skip to content

Commit 48586e3

Browse files
Merge pull request #621 from cloudinary/basic-asset-relations-api
feat: basic asset relations api
2 parents 262d690 + b979e59 commit 48586e3

File tree

8 files changed

+447
-107
lines changed

8 files changed

+447
-107
lines changed

lib-es5/api.js

Lines changed: 53 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ function deleteResourcesParams(options) {
1616
}
1717

1818
function getResourceParams(options) {
19-
return pickOnlyExistingValues(options, "exif", "cinemagraph_analysis", "colors", "derived_next_cursor", "faces", "image_metadata", "media_metadata", "pages", "phash", "coordinates", "max_results", "versions", "accessibility_analysis");
19+
return pickOnlyExistingValues(options, "exif", "cinemagraph_analysis", "colors", "derived_next_cursor", "faces", "image_metadata", "media_metadata", "pages", "phash", "coordinates", "max_results", "versions", "accessibility_analysis", 'related', 'related_next_cursor');
2020
}
2121

2222
exports.ping = function ping(callback) {
@@ -242,6 +242,50 @@ exports.delete_all_resources = function delete_all_resources(callback) {
242242
}), callback, options);
243243
};
244244

245+
var createRelationParams = function createRelationParams() {
246+
var publicIds = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
247+
248+
return {
249+
assets_to_relate: Array.isArray(publicIds) ? publicIds : [publicIds]
250+
};
251+
};
252+
253+
var deleteRelationParams = function deleteRelationParams() {
254+
var publicIds = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
255+
256+
return {
257+
assets_to_unrelate: Array.isArray(publicIds) ? publicIds : [publicIds]
258+
};
259+
};
260+
261+
exports.add_related_assets = function (publicId, assetsToRelate, callback) {
262+
var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
263+
264+
var params = createRelationParams(assetsToRelate);
265+
return call_api('post', ['resources', 'related_assets', options.resource_type, options.type, publicId], params, callback, options);
266+
};
267+
268+
exports.add_related_assets_by_asset_id = function (assetId, assetsToRelate, callback) {
269+
var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
270+
271+
var params = createRelationParams(assetsToRelate);
272+
return call_api('post', ['resources', 'related_assets', assetId], params, callback, options);
273+
};
274+
275+
exports.delete_related_assets = function (publicId, assetsToUnrelate, callback) {
276+
var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
277+
278+
var params = deleteRelationParams(assetsToUnrelate);
279+
return call_api('delete', ['resources', 'related_assets', options.resource_type, options.type, publicId], params, callback, options);
280+
};
281+
282+
exports.delete_related_assets_by_asset_id = function (assetId, assetsToUnrelate, callback) {
283+
var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
284+
285+
var params = deleteRelationParams(assetsToUnrelate);
286+
return call_api('delete', ['resources', 'related_assets', assetId], params, callback, options);
287+
};
288+
245289
exports.delete_derived_resources = function delete_derived_resources(derived_resource_ids, callback) {
246290
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
247291

@@ -748,7 +792,10 @@ exports.order_metadata_field_datasource = function order_metadata_field_datasour
748792
var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
749793

750794
options.content_type = "json";
751-
var params = { order_by: sort_by, direction: direction };
795+
var params = {
796+
order_by: sort_by,
797+
direction: direction
798+
};
752799
return call_api("post", ["metadata_fields", field_external_id, "datasource", "order"], params, callback, options);
753800
};
754801

@@ -766,7 +813,10 @@ exports.reorder_metadata_fields = function reorder_metadata_fields(order_by, dir
766813
var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
767814

768815
options.content_type = "json";
769-
var params = { order_by, direction };
816+
var params = {
817+
order_by,
818+
direction
819+
};
770820
return call_api("put", ["metadata_fields", "order"], params, callback, options);
771821
};
772822

lib-es5/v2/api.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,5 +70,9 @@ v1_adapters(exports, api, {
7070
list_metadata_rules: 1,
7171
add_metadata_rule: 1,
7272
delete_metadata_rule: 1,
73-
update_metadata_rule: 2
73+
update_metadata_rule: 2,
74+
add_related_assets: 2,
75+
add_related_assets_by_asset_id: 2,
76+
delete_related_assets: 2,
77+
delete_related_assets_by_asset_id: 2
7478
});

lib/api.js

Lines changed: 48 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
const utils = require("./utils");
22
const call_api = require("./api_client/call_api");
33

4-
const { extend, pickOnlyExistingValues } = utils;
4+
const {
5+
extend,
6+
pickOnlyExistingValues
7+
} = utils;
58

69
const TRANSFORMATIONS_URI = "transformations";
710

@@ -10,7 +13,7 @@ function deleteResourcesParams(options, params = {}) {
1013
}
1114

1215
function getResourceParams(options) {
13-
return pickOnlyExistingValues(options, "exif", "cinemagraph_analysis", "colors", "derived_next_cursor", "faces", "image_metadata", "media_metadata", "pages", "phash", "coordinates", "max_results", "versions", "accessibility_analysis");
16+
return pickOnlyExistingValues(options, "exif", "cinemagraph_analysis", "colors", "derived_next_cursor", "faces", "image_metadata", "media_metadata", "pages", "phash", "coordinates", "max_results", "versions", "accessibility_analysis", 'related', 'related_next_cursor');
1417
}
1518

1619
exports.ping = function ping(callback, options = {}) {
@@ -175,6 +178,38 @@ exports.delete_all_resources = function delete_all_resources(callback, options =
175178
}), callback, options);
176179
};
177180

181+
const createRelationParams = (publicIds = []) => {
182+
return {
183+
assets_to_relate: Array.isArray(publicIds) ? publicIds : [publicIds]
184+
};
185+
};
186+
187+
const deleteRelationParams = (publicIds = []) => {
188+
return {
189+
assets_to_unrelate: Array.isArray(publicIds) ? publicIds : [publicIds]
190+
};
191+
};
192+
193+
exports.add_related_assets = (publicId, assetsToRelate, callback, options = {}) => {
194+
const params = createRelationParams(assetsToRelate);
195+
return call_api('post', ['resources', 'related_assets', options.resource_type, options.type, publicId], params, callback, options);
196+
};
197+
198+
exports.add_related_assets_by_asset_id = (assetId, assetsToRelate, callback, options = {}) => {
199+
const params = createRelationParams(assetsToRelate);
200+
return call_api('post', ['resources', 'related_assets', assetId], params, callback, options);
201+
};
202+
203+
exports.delete_related_assets = (publicId, assetsToUnrelate, callback, options = {}) => {
204+
const params = deleteRelationParams(assetsToUnrelate);
205+
return call_api('delete', ['resources', 'related_assets', options.resource_type, options.type, publicId], params, callback, options);
206+
};
207+
208+
exports.delete_related_assets_by_asset_id = (assetId, assetsToUnrelate, callback, options = {}) => {
209+
const params = deleteRelationParams(assetsToUnrelate);
210+
return call_api('delete', ['resources', 'related_assets', assetId], params, callback, options);
211+
};
212+
178213
exports.delete_derived_resources = function delete_derived_resources(derived_resource_ids, callback, options = {}) {
179214
let uri;
180215
uri = ["derived_resources"];
@@ -235,7 +270,7 @@ exports.update_transformation = function update_transformation(transformationNam
235270
};
236271

237272
exports.create_transformation = function create_transformation(name, definition, callback, options = {}) {
238-
const params = { name };
273+
const params = {name};
239274
params.transformation = utils.build_eager(definition);
240275
return call_api("post", TRANSFORMATIONS_URI, params, callback, options);
241276
};
@@ -560,7 +595,7 @@ exports.update_metadata_field_datasource = function update_metadata_field_dataso
560595
*/
561596
exports.delete_datasource_entries = function delete_datasource_entries(field_external_id, entries_external_id, callback, options = {}) {
562597
options.content_type = "json";
563-
const params = { external_ids: entries_external_id };
598+
const params = {external_ids: entries_external_id};
564599
return call_api("delete", ["metadata_fields", field_external_id, "datasource"], params, callback, options);
565600
};
566601

@@ -581,7 +616,7 @@ exports.delete_datasource_entries = function delete_datasource_entries(field_ext
581616
*/
582617
exports.restore_metadata_field_datasource = function restore_metadata_field_datasource(field_external_id, entries_external_id, callback, options = {}) {
583618
options.content_type = "json";
584-
const params = { external_ids: entries_external_id };
619+
const params = {external_ids: entries_external_id};
585620
return call_api("post", ["metadata_fields", field_external_id, "datasource_restore"], params, callback, options);
586621
};
587622

@@ -597,7 +632,10 @@ exports.restore_metadata_field_datasource = function restore_metadata_field_data
597632
*/
598633
exports.order_metadata_field_datasource = function order_metadata_field_datasource(field_external_id, sort_by, direction, callback, options = {}) {
599634
options.content_type = "json";
600-
const params = { order_by: sort_by, direction: direction};
635+
const params = {
636+
order_by: sort_by,
637+
direction: direction
638+
};
601639
return call_api("post", ["metadata_fields", field_external_id, "datasource", "order"], params, callback, options);
602640
};
603641

@@ -613,7 +651,10 @@ exports.order_metadata_field_datasource = function order_metadata_field_datasour
613651
*/
614652
exports.reorder_metadata_fields = function reorder_metadata_fields(order_by, direction, callback, options = {}) {
615653
options.content_type = "json";
616-
const params = { order_by, direction };
654+
const params = {
655+
order_by,
656+
direction
657+
};
617658
return call_api("put", ["metadata_fields", "order"], params, callback, options);
618659
};
619660

lib/v2/api.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,5 +68,9 @@ v1_adapters(exports, api, {
6868
list_metadata_rules: 1,
6969
add_metadata_rule: 1,
7070
delete_metadata_rule: 1,
71-
update_metadata_rule: 2
71+
update_metadata_rule: 2,
72+
add_related_assets: 2,
73+
add_related_assets_by_asset_id: 2,
74+
delete_related_assets: 2,
75+
delete_related_assets_by_asset_id: 2
7276
});

0 commit comments

Comments
 (0)