https://github.com/lifion/lifion-aws-event-stream
Node.js parser for the application/vnd.amazon.eventstream content-type.
https://github.com/lifion/lifion-aws-event-stream
amazon-event-stream aws aws-event-stream cloud content-type event-stream node nodejs parser stream
Last synced: about 2 months ago
JSON representation
Node.js parser for the application/vnd.amazon.eventstream content-type.
- Host: GitHub
- URL: https://github.com/lifion/lifion-aws-event-stream
- Owner: lifion
- License: mit
- Created: 2018-09-28T17:00:51.000Z (over 6 years ago)
- Default Branch: develop
- Last Pushed: 2023-01-10T21:02:52.000Z (over 2 years ago)
- Last Synced: 2025-03-06T19:47:32.573Z (3 months ago)
- Topics: amazon-event-stream, aws, aws-event-stream, cloud, content-type, event-stream, node, nodejs, parser, stream
- Language: JavaScript
- Size: 1.72 MB
- Stars: 0
- Watchers: 7
- Forks: 0
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# lifion-aws-event-stream
Node.js parser for binary streams under the **application/vnd.amazon.eventstream** content-type.
## Getting Started
To install the module:
```sh
npm install lifion-aws-event-stream --save
```The module exports a [parse](#module_lifion-aws-event-stream.parse) function and a [Parser](#module_lifion-aws-event-stream.Parser) stream. To use the [parse](#module_lifion-aws-event-stream.parse) function:
```js
const { parse } = require('lifion-aws-event-stream');const buffer = Buffer.from('000000100000000005c248eb7d98c8ff', 'hex');
console.log(parse(buffer)); // { headers: {}, payload: '' }
```To use the [Parser](#module_lifion-aws-event-stream.Parser) stream:
```js
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:
```js
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:
- https://github.com/aws/aws-sdk-ruby/tree/master/gems/aws-eventstream
- https://github.com/awslabs/aws-c-event-stream## API Reference
* [lifion-aws-event-stream](#module_lifion-aws-event-stream)
* _global_
* [Parser](#Parser) ⇐Transform
* _static_
* [.parse(buffer)](#module_lifion-aws-event-stream.parse) ⇒Object
### 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
](#module_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
](#module_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](./LICENSE)