public/create.js

/**
 * Create new asset
 * @method create
 * @memberof Elvis.prototype
 * @param params {Object} - Parameters
 * @param [params.Filedata] {File} - The file to be created in Elvis
 * @param [params.metadata] {Object} - Object containing Elvis fields
 * @param [params.nextUrl] {String} - 301 redirect will happen to this URL if specified
 * @returns {Promise}
 */
module.exports = function create(params) {
  if (!this.__isLoggedIn()) {
    return Promise.reject('elvis-driver#create: Authentication required to create asset.')
  }

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

    var _params = params

    if (params.Filedata) {
      request.attach = ['Filedata', params.Filedata]

      _params = JSON.parse(JSON.stringify(_params))
      delete _params.Filedata
    }

    request.params = _params

    this.__request(request)
  })
}