1 var REST = library.REST.REST(); 2 3 //Import parameters 4 var myImportParameters = null; 5 var kUpdateTypes = { 6 viewanddata: 0, 7 data: 1, 8 view: 2, 9 forceview: 3, 10 }; 11 12 /** 13 * Imports the source file or folder and pushes it to the response. 14 * 15 * @param theSource the file or folder to import (path or asset id) 16 */ 17 function fileOrFolderImport(theSource) { 18 var aToImport = null; 19 var aIsFile = false; 20 if (isNaN(theSource)) { 21 if (!context.getUser().isGlobalAdmin()) { 22 REST.pushError( 23 REST.errors.e403, 24 "Only global admins can import directories" 25 ); 26 return; 27 } 28 //theSource isn't an id, its probably a path 29 theSource = REST.getFullPath(theSource); 30 if (theSource.lastIndexOf("/") == theSource.length - 1) { 31 aToImport = new UnmanagedFolder(theSource); 32 } else { 33 aToImport = new UnmanagedFile(theSource); 34 aIsFile = true; 35 } 36 } else { 37 if (!context.getUser().isPermissionEnabled("importAssets")) { 38 REST.pushError( 39 REST.errors.e403, 40 "importAssets permission is not enabled" 41 ); 42 return; 43 } 44 aToImport = 45 searchManager.filterByACL([theSource]).length == 0 46 ? null 47 : fileManager.getFileObjectById(theSource); 48 aIsFile = true; 49 } 50 if (aToImport == null) { 51 REST.pushError( 52 REST.errors.e404, 53 "Could not find file or folder: " + theSource 54 ); 55 return; 56 } 57 //Import file or folder and add data to output object 58 var aManaged; 59 if (aIsFile) { 60 aManaged = fileManager.fileImport(aToImport, myImportParameters); 61 REST.push(aManaged); 62 } else { 63 aManaged = fileManager.folderImportWithParameters( 64 aToImport, 65 myImportParameters 66 ); 67 REST.push(aManaged); 68 } 69 70 //Trigger asset added on new assets 71 if (aToImport instanceof UnmanagedFile && !!aManaged) { 72 workflowManager.triggerAssetAdded(aManaged); 73 } 74 } 75 76 /** 77 * @name Import 78 * @class Imports files or folders 79 * @description Given the files/directories in "data" , this endpoint will import each into MediaBeacon 80 * @param data an array of file/directory paths or asset id's ["To/Import/file.txt",123456,"Directory/Import/" ...] 81 * @param [updateType] string. Options are:<br> 82 * 'ViewAndData' - previews and metadata potentially will be updated. Does not update on demand previews.<br> 83 * 'Data' - metadata potentially will be updated.<br> 84 * 'View' - previews potentially will be updated. Does not update on demand previews.<br> 85 * 'ForceView' - the creation of a new preview request will be force regardless of the state of the cache and preview queue. 86 * On demand previews will be cleared. 87 * @param [verbose=false] Setting this to true will collect a variety of default values for each asset. 88 * @param [fields] An array of field id's to collect the values for each asset 89 * @returns [{assetInfo},{directoryInfo}, ... ] 90 * 91 * @example /wf/restapi/v2/import 92 * 93 * Parameters: 94 * data=["To/Import/file.txt",123456,"Directory/Import/"] 95 * updateType=ViewAndData 96 * verbose=true 97 * 98 * Response: 99 [ 100 { 101 "id": 201629348, 102 "name": "file.txt", 103 "path": "To/Import/file.txt", 104 "height": 0, 105 "width": 0, 106 "bytes": 0, 107 "lastModified": 1508164407000, 108 "mimeType": "text/plain", 109 "previews": { 110 "thumbnail": "../servlet/jb.view?table=thumbnails&col=thumbnails&id=pe_323031363239333438", 111 "viewex": "../servlet/jb.view?table=viewex&col=viewex&id=pe_323031363239333438", 112 "downloadUrl": "../servlet/dload?id=pe_323031363239333438" 113 } 114 }, 115 { 116 "path": "Directory/Import/", 117 "name": "Import", 118 "resolver": "directory://161" 119 } 120 ] 121 */ 122 function main() { 123 //Setup import parameters 124 var anUpdateType = context.getParameter("updateType"); 125 myImportParameters = new ImportParameters(); 126 var aNumUpdate = !anUpdateType 127 ? null 128 : kUpdateTypes[anUpdateType.toLowerCase()]; 129 if (!!aNumUpdate) { 130 myImportParameters.setUpdateType(aNumUpdate); 131 } 132 REST.setCallback(fileOrFolderImport); 133 return REST.execute("data"); //data is expected to be an array of folder paths, file paths or asset id's 134 } 135 main(); 136