/**
 * 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)
  })
}