1 /**
  2  * Workflow to return the Path of the (asset/assets) given a list of asset Id's using a REST call
  3  *
  4  * @author milogertjejansen
  5  */
  6 var REST = library.REST.REST();
  7 var myData = {};
  8 
  9 var myFields = [];
 10 
 11 /**
 12  * Creates a JSON object with the path of the given asset and adds it to myData
 13  * @param theAssetId
 14  */
 15 function getInfo(theAssetId) {
 16   var aMap = {};
 17 
 18   // Get the file path.
 19   var aFile = fileManager.getFileObjectById(theAssetId);
 20   if (!aFile) {
 21     aMap.error = "Cannot find file object.";
 22     return;
 23   }
 24   aMap.name = aFile.name;
 25   aMap.path = aFile.path;
 26 
 27   // Image data stuff.
 28   aMap.height = aFile.height;
 29   aMap.width = aFile.width;
 30   aMap.format = aFile.format;
 31 
 32   // Get the some fields if we asked for them.
 33   if (myFields.length > 0) {
 34     aMap.fields = {};
 35     for (var i = 0; i < myFields.length; i++) {
 36       var aFieldSet = myFields[i].split(" ");
 37       var aProp = new Property(aFieldSet[0], aFieldSet[1]);
 38       aMap.fields[myFields[i]] = aFile.xmp.meta.getField(aProp);
 39     }
 40   }
 41 
 42   // Link to download asset.
 43   aMap.link =
 44     context.getBaseUrl() +
 45     "/servlet/d/" +
 46     aFile.name +
 47     "?mime=application/zip&type=zip&r=asset://" +
 48     theAssetId;
 49 
 50   // Get the previews.
 51   var aGetPreviewsWF = new Workflow(
 52     "Renditions/Workflows/_internal/restapi/1/getPreviews.xmpwf"
 53   );
 54   var aParameters = new Parameters();
 55   aParameters.put("src", theAssetId);
 56   aPreviewMap = JSON.parse(aGetPreviewsWF.trigger(aParameters));
 57   aMap.previews = [];
 58   for (var aKey in aPreviewMap) {
 59     aMap.previews.push(aPreviewMap[aKey]);
 60   }
 61 
 62   myData[theAssetId] = aMap;
 63 }
 64 
 65 /**
 66  * Returns information of assets.
 67  *
 68  * @description gets information on the asset.
 69  * @example /wf/restapi/1/info?id=["asset_id"]
 70  * @example <a target="_blank" href=http://127.0.0.1:55555/wf/restapi/1/info?id=["12345"]>http://127.0.0.1:55555/wf/restapi/1/info?id=["12345"]</a>
 71  * @class Returns information of assets.
 72  * @name Info
 73  * @param id asset id or a list of asset ids to get info for.
 74  * @returns Object { 'id1': { info }, 'id2'; { info }, ... }
 75  */
 76 function main() {
 77   var aParameters = REST.getParametersToIterate("id");
 78   myFields = REST.getParameter("fields", false);
 79 
 80   if (myData.error != null) {
 81     return REST.formatResponse();
 82   }
 83   REST.iterateThroughParameters(aParameters, getInfo);
 84   return REST.formatResponse();
 85 }
 86 main();
 87