Skip to content

Node.js parser for the application/vnd.amazon.eventstream content-type.

License

Notifications You must be signed in to change notification settings

lifion/lifion-aws-event-stream

Repository files navigation

lifion-aws-event-stream

Node.js parser for binary streams under the application/vnd.amazon.eventstream content-type.

Getting Started

To install the module:

npm install lifion-aws-event-stream --save

The module exports a parse function and a Parser stream. To use the parse function:

const { parse } = require('lifion-aws-event-stream');

const buffer = Buffer.from('000000100000000005c248eb7d98c8ff', 'hex');
console.log(parse(buffer)); // { headers: {}, payload: '' }

To use the Parser stream:

const { Parser } = require('lifion-aws-event-stream');

const parser = new Parser();
parser.on('data', console.log); // { headers: {}, payload: '' }

const buffer = Buffer.from('000000100000000005c248eb7d98c8ff', 'hex');
parser.write(buffer);

Pipe an HTTP response to parse the messages as they arrive:

const got = require('got');
const { Parser } = require('lifion-aws-event-stream');
const { pipeline } = require('stream');

pipeline([
  got('/', ),
  new Parser(),
  new Writable({
    objectMode: true,
    write(data, encoding, callback) {
      console.log(data);
      callback();
    }
  }),
]);

This project's implementation is based on:

API Reference

lifion-aws-event-streamParser ⇐ Transform

A transform stream that calls parse with the binary data written to it. Can be used to pipe a response stream from an AWS service HTTP request. The stream will emit errors thrown during parse calls.

Kind: global class of lifion-aws-event-stream
Extends: Transform
See: https://nodejs.org/dist/latest-v10.x/docs/api/stream.html#stream_class_stream_transform

eventStream.parse(buffer) ⇒ Object

Parses the specified buffer with vnd.amazon.eventstream data into an object.

Kind: static method of lifion-aws-event-stream
Returns: Object - The parsed vnd.amazon.eventstream object.
Throws:

  • Error Whenever:
    • The specified buffer has less than 16 bytes. The minimum vnd.amazon.eventstream message should have 4 bytes for the total length of the package, 4 bytes for the length of the headers section, 4 bytes for the checksum of the prelude, and finally 4 more bytes for the checksum of the entire message.
    • The total length as specified in the message doesn't matches the bufffer length.
    • The checksum of the prelude doesn't matches the calculated checksum.
    • The checksum of the message doesn't matches the calculated checksum.
    • The header value type is unknown.
Param Type Description
buffer Buffer The buffer to parse.

License

MIT