async-multipart-iterator

1.0.1 • Public • Published

async-multipart-iterator

Iterate the parts of an RFC 1528 multipart (multipart/mixed, multipart/alternative, multipart/digest, multipart/parallel) document, sequentially producing a header and a body iterator for each part.

Quick example

'use strict'
const someInputFile = 'something';  // name of a multipart file to be parsed
const someOutputDir = '/tmp/something';  // name of a directory in which bodies of each of the parts will be written
const boundary = 'cd67d1a112145bdcfdce0c5839b36b53'; // the boundaries to be found in the input file
 
const fs = require('fs');
const {multipartIterator} = require('async-multipart-iterator');
 
async function main() {
    const input = fs.createReadStream(someInputFile);
 
    let count = 0;
    for await (let [header, bodyIterator] of multipartIterator(boundary, input)) {
        // here for each part of the document
        console.log(header)  // right now just an array of unparsed lines from the part's header
        const stream = fs.createWriteStream(`{someOutputFile}/${count++}`);
        for await (let chunk of bodyIterator) {
            await new Promise( (res,rej) => stream.write(chunk, res));
        }
        await new Promise( (res,rej) => stream.end(res));
    }
}
main().catch(console.error)

Package Sidebar

Install

npm i async-multipart-iterator

Weekly Downloads

115

Version

1.0.1

License

ISC

Unpacked Size

17.1 kB

Total Files

8

Last publish

Collaborators

  • randymized