Have ideas to improve npm?Join in the discussion! »

    form-auto-content

    2.2.0 • Public • Published

    form-auto-content

    Build Status JavaScript Style Guide

    Build a form payload without caring if it should be application/x-www-form-urlencoded or multipart/form-data

    Install

    npm install form-auto-content
    

    Usage

    This module will transform your JSON to a payload ready to submit to an HTTP server! The autosense feature will check if there is a stream or a buffer as input and it will act accordingly returning a multipart/form-data stream; otherwise it will create a x-www-form-urlencoded string.

    The module return a JSON like this:

    {
      payload: Stream, // the data Stream
      headers: {} // a JSON with the `content-type` field set
    }

    x-www-form-urlencoded

    const formAutoContent = require('form-auto-content')
    
    const myForm = formAutoContent({
      field1: 'value1',
      field2: ['value2', 'value2.2'] // array are supported too!!
    })
    
    myForm.payload // Stream of the string in application/x-www-form-urlencoded format
    myForm.headers // JSON with the `content-type` field set

    multipart/form-data

    const formAutoContent = require('form-auto-content')
    
    const myForm = formAutoContent({
      field1: 'value1',
      field2: ['value2', 'value2.2'], // array are supported too!!
      myFile: fs.createReadStream('the-file.xml'),
      multipleFiles: [fs.createReadStream('file1.xml'), fs.createReadStream('file2.xml')],
      wowBuffer: Buffer.from('a long string'),
    
      // the file options are supported too:
      myRenamedFile: {
        value: fs.createReadStream('./foo.md'),
        options: {
          filename: 'bar.md',
          contentType: 'text/markdown'
        }
      },
      // also in arrays!
      renamedArray: [
        {
          value: fs.createReadStream('./one.json'),
          options: { filename: 'foo.json' }
        },
        {
          value: fs.createReadStream('./two.json'),
          options: { filename: 'bar.json' }
        }
      ]
    })
    
    myForm.payload // Stream in multipart/form-data format
    myForm.headers // JSON with the `content-type` field set to multipart/form-data

    Options

    To customize the output field names, add an extra option object with the payload and headers string!

    const formAutoContent = require('form-auto-content')
    
    const option = { payload: 'body', headers: 'head' }
    const myCustomForm = formAutoContent({
      field1: 'value1',
      field2: ['value2', 'value2.2'] // array are supported too!!
    }, option)
    
    myForm.body // Stream of the string in application/x-www-form-urlencoded format
    myForm.head // JSON with the `content-type` field set

    License

    Licensed under MIT.

    Install

    npm i form-auto-content

    DownloadsWeekly Downloads

    135

    Version

    2.2.0

    License

    MIT

    Unpacked Size

    12.2 kB

    Total Files

    7

    Last publish

    Collaborators

    • avatar