Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/flickr/incoming-message-hash
Generate a one-way hash from an http.IncomingMessage
https://github.com/flickr/incoming-message-hash
hash md5 node request
Last synced: about 2 months ago
JSON representation
Generate a one-way hash from an http.IncomingMessage
- Host: GitHub
- URL: https://github.com/flickr/incoming-message-hash
- Owner: flickr
- License: mit
- Created: 2016-03-24T15:53:32.000Z (almost 9 years ago)
- Default Branch: main
- Last Pushed: 2022-02-11T23:27:47.000Z (almost 3 years ago)
- Last Synced: 2024-10-13T13:12:50.128Z (2 months ago)
- Topics: hash, md5, node, request
- Language: JavaScript
- Homepage:
- Size: 33.2 KB
- Stars: 5
- Watchers: 5
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# incoming-message-hash
Generate a one-way hash from an [http.IncomingMessage][]
## install
``` bash
$ npm install incoming-message-hash --save
```## example
This example demonstrates how the hashing function returns a different hash based on the IncomingMessage's method, path, query string, headers and body.
``` js
import hash from 'incoming-message-hash'
import { createServer } from 'http'createServer((req, res) => {
req.pipe(hash()).pipe(res)
}).listen(4567, () => {
console.log('Server is listening on port 4567');
})
`````` bash
$ curl http://localhost:4567; echo
e91caf6d7b009b5af0fb2e18cff95598
$ curl http://localhost:4567/foo; echo
2f24d536fd0ca7c4eb72a8d64440066f
$ curl http://localhost:4567/foo?a=b; echo
0bb92c398df54668d9020b835c345cb8
$ curl http://localhost:4567/foo?a=c; echo
02bd995c9ebccfc0332619a03ce0a688
$ curl -H "Host: www.flickr.com" http://localhost:4567; echo
ce8f3e6257911a9499923d0deebe56b5
$ curl -X POST http://localhost:4567; echo
41ba64dca3f3070b361b302a17742973
$ curl -X POST -d "yay" http://localhost:4567; echo
64ae029a6a4add75fadb03811a13caa7
```## usage
``` js
var hash = require('incoming-message-hash');
```### hash([algorithm='md5'[, encoding='hex']])
Returns a new [crypto.Hash][] stream using the specified algorithm and encoding (defaults to "md5" and "hex"). You can pipe your [http.IncomingMessage][] in and get a hash back.
```js
import hash from 'incoming-message-hash'
import { createServer } from 'http'createServer((req, res) => {
req.pipe(hash()).pipe(res)
})
```### hash.sync(req, body[, algorithm='md5'[, encoding='hex']])
Synchronous version of `hash()` that accepts an [http.IncomingMessage][] and its body and returns the hash. You must buffer up the request body yourself if you wish to use this method.
```js
import { promise } from 'incoming-message-hash'
import { createServer } from 'http'createServer(async function (req, res) {
let body = ''req.on('data', chunk => body += String(chunk))
req.on('end', () => {
res.end(sync(req, body))
})
})
```### hash.promise(req[, algorithm='md5'[, encoding='hex]])
Asynchronous version of `hash()` that accepts an [http.IncomingMessage][] and
buffers the body up for you.```js
import { promise } from 'incoming-message-hash'
import { createServer } from 'http'createServer(async (req, res) => {
res.end(await promise(req))
})
```## license
This software is free to use under the MIT license. See the [LICENSE][] file for license text and copyright information.
[LICENSE]: https://github.com/flickr/incoming-message-hash/blob/master/LICENSE
[http.IncomingMessage]: https://nodejs.org/api/http.html#http_class_http_incomingmessage
[crypto.Hash]: https://nodejs.org/api/crypto.html#crypto_class_hash