marshals/form.js

var request = require('request')
var utils = require('../utils')
var path = require('path')
var fs = require('fs')

/**
 * @module marshals/form
 * @author Nijiko Yonskai
 */

/**
 * Converts JavaScript multipart object into FormData object
 *
 * @param  {FormData} form FormData Instance
 * @param  {Object}   data Multipart form data object
 * @return {FormData}
 */
exports.marshal = function (form, data) {
  for (var i = 0; i < data.length; i++) {
    var item = data[i]

    if (item.attachment && utils.is(item.value).a(String)) {
      if (utils.does(item.value).contain('http://') || utils.does(item.value).contain('https://')) {
        item.value = request(item.value)
      } else {
        item.value = fs.createReadStream(path.resolve(item.value))
      }
    }

    form.append(item.name, item.value, item.options)
  }

  return form
}