1 var REST = library.REST.REST(); 2 3 /** 4 * Deletes the file or folder defined in theJSON 5 * 6 * @param theJSON - {"id": 123456} or {"path": "Folder/To/Delete/"} 7 */ 8 function fileOrFolderDelete(theJSON) { 9 if (!!theJSON.path) { 10 var aFolder; 11 try { 12 aFolder = new ManagedFolder(REST.getFullPath(theJSON.path)); 13 } catch (err) { 14 REST.pushError( 15 REST.errors.e404, 16 "The directory does not exist: " + theJSON.path 17 ); 18 return; 19 } 20 try { 21 REST.push(aFolder); 22 fileManager.folderDelete(aFolder); 23 } catch (anE) { 24 REST.pop(); 25 throw anE; 26 } 27 } else if (!!theJSON.id) { 28 var aFile = fileManager.getFileObjectById(theJSON.id); 29 if (!aFile || searchManager.filterByACL([theJSON.id]).length == 0) { 30 REST.pushError( 31 REST.errors.e404, 32 "The file does not exist: " + theJSON.id 33 ); 34 } else { 35 try { 36 var aTriggeredAdd = {}; 37 var aStub = REST.triggerAssetBasedWorkflows( 38 REST.AssetTriggers.Removed, 39 aFile 40 ); 41 if (aStub) { 42 aTriggeredAdd.triggerAssetRemoved = aStub.ok; 43 } 44 REST.push(aFile, aTriggeredAdd); 45 fileManager.fileDelete(aFile); 46 } catch (anE) { 47 REST.pop(); 48 throw anE; 49 } 50 } 51 } else { 52 REST.pushError( 53 REST.errors.e400, 54 "Failed to process: " + JSON.stringify(theJSON) 55 ); 56 } 57 } 58 59 /** 60 * @name Delete 61 * @class Deletes Directories and Files 62 * @description For every object in "data", this endpoint deletes the defined file or directory 63 * 64 * @param data An array of object that define the assets to decompress and where to place contents 65 * [{"id": 123456}, {"path": "Folder/To/Delete/"}, ...] 66 * @param [verbose=false] Setting this to true will collect a variety of default values for each asset. 67 * @param [fields] An array of field id's to collect the values for each asset 68 * @param [triggerAssetBasedWorkflow=true] set to false to avoid triggering other asset removed workflows 69 * @returns [{theRemovedFileInfo},{theRemovedFolderInfo, ... ] 70 * 71 * @example /wf/restapi/v2/delete 72 * 73 * Parameters: 74 * data=[{"id":201629304},{"path":"Folder/To/Delete/"}] 75 * verbose=true 76 * 77 Response: 78 [ 79 { 80 "id": 201629304, 81 "name": "test.txt", 82 "path": "Folder/test.txt", 83 "height": 0, 84 "width": 0, 85 "bytes": 0, 86 "lastModified": 1507837323000, 87 "mimeType": "text/plain", 88 "previews": { 89 "thumbnail": "../servlet/jb.view?table=thumbnails&col=thumbnails&id=pe_323031363239333034", 90 "viewex": "../servlet/jb.view?table=viewex&col=viewex&id=pe_323031363239333034", 91 "downloadUrl": "../servlet/dload?id=pe_323031363239333034" 92 } 93 }, 94 { 95 "path": "Folder/To/Delete/", 96 "name": "Delete", 97 "resolver": "directory://254" 98 } 99 ] 100 101 */ 102 function main() { 103 if (!context.getUser().isPermissionEnabled("deleteAccess")) { 104 REST.pushError(REST.errors.e403, "deleteAccess permission is not enabled"); 105 return REST.execute(); 106 } 107 REST.setCallback(fileOrFolderDelete); 108 return REST.execute("data"); 109 } 110 main(); 111