public/move.js

/**
 * Move or rename a folder or a single asset
 * @method move
 * @memberof Elvis.prototype
 *
 * @param params {Object}
 *   Parameters
 *
 * @param params.source {String}
 *   folderPath or assetPath to be moved or renamed
 *
 * @param params.target {String}
 *   Target path
 *
 * @param [params.filterQuery] {String}
 *   Move/rename only source assets that match this query
 *
 * @param [params.flattenFolders] {Boolean}
 *  Flatten any subfolder structure
 *
 * @param [params.async] {Boolean}
 *   Will cause the process to run asynchronous in the background
 *
 * @param [params.folderReplacePolicy="AUTO_RENAME"] {String}
 *   "AUTO_RENAME" | "MERGE" | "THROW_EXCEPTION"
 *
 * @param [params.fileReplacePolicy="AUTO_RENAME"] {String}
 *   "AUTO_RENAME" | "OVERWRITE" | "OVERWRITE_IF_NEWER" | "REMOVE_SOURCE" | "THROW_EXCEPTION" | "DO_NOTHING"
 *
 * @returns {Promise}
 */
module.exports = function move(params) {
  if (!this.__isLoggedIn()) {
    return Promise.reject('elvis-driver#move: Authentication required to move/rename assets/folders.')
  }

  return new Promise((resolve, reject) => {
    var request = {
      url: this.__getRemoteURL('/services/move'),
      success: resolve,
      failure: reject,
      params: params
    }

    this.__request(request)
  })
}