README
@whook/http-transaction
Isolated HTTP Transactions for the Whook framework
Whook takes a very unusual direction when it comes to dealing with HTTP transactions. It makes requests and responses serializable to:
- only work with functions that take request and return responses ( allowing your handlers to be pure functions),
- have easily unit testable handlers thanks to concise snapshots.
This service is intended to build those objects from Node HTTP ones before passing them to the handlers. It also keeps track of running queries and ensure it is well handled by the server before releasing it.
API
Functions
- default(services) ⇒
Promise.<WhookHTTPTransaction>
Instantiate the httpTransaction service
- initAPM(services) ⇒
Promise.<Object>
Application monitoring service that simply log stringified contents.
- initObfuscator(services) ⇒
Promise.<Object>
Obfuscate sensible informations.
Typedefs
Promise.<WhookHTTPTransaction>
default(services) ⇒ Instantiate the httpTransaction service
Kind: global function
Returns: Promise.<WhookHTTPTransaction>
- A promise of the httpTransaction function
Param | Type | Default | Description |
---|---|---|---|
services | Object |
The services to inject | |
[services.TIMEOUT] | Number |
30000 |
A number indicating how many ms the transaction should take to complete before being cancelled. |
[services.TRANSACTIONS] | Object |
{} |
A hash of every current transactions |
services.delay | Object |
A delaying service | |
services.obfuscator | Object |
A service to avoid logging sensible informations | |
[services.log] | function |
A logging function | |
[services.apm] | function |
An apm function | |
[services.time] | function |
A timing function | |
[services.uniqueId] | function |
A function returning unique identifiers |
Example
import initHTTPTransaction from '@whook/http-transaction';
const httpTransaction = await initHTTPTransaction({
log: console.log.bind(console),
time: Date.now.bind(Date),
});
Promise.<Object>
initAPM(services) ⇒ Application monitoring service that simply log stringified contents.
Kind: global function
Returns: Promise.<Object>
- A promise of the apm service.
Param | Type | Description |
---|---|---|
services | Object |
The services to inject |
[services.log] | function |
A logging function |
Promise.<Object>
initObfuscator(services) ⇒ Obfuscate sensible informations.
Kind: global function
Returns: Promise.<Object>
- A promise of an object containing the gathered constants.
Param | Type | Description |
---|---|---|
services | Object |
The service dependend on |
[services.SHIELD_CHAR] | Object |
The char for replacing sensible informations |
[services.MAX_CLEAR_CHARS] | Object |
The maximum clear chars to display |
[services.MAX_CLEAR_RATIO] | Object |
The maximum clear chars ratio to display |
[services.SENSIBLE_PROPS] | Object |
Sensible properties names |
[services.SENSIBLE_HEADERS] | Object |
Sensible headers names |
Example
import { initObfuscator } from '@whook/http-transaction';
import { alsoInject } from 'knifecycle';
const obfuscator = await initObfuscator();
console.log(obfuscator('my very secret information!));
// my ...on!
WhookHTTPTransaction
Kind: global typedef
WhookHTTPTransaction.id
Id of the transaction
Kind: static property of WhookHTTPTransaction
Promise.<Object>
WhookHTTPTransaction.start ⇒ Start the transaction
Kind: static property of WhookHTTPTransaction
Returns: Promise.<Object>
- A promise to be resolved with the signed token.
Param | Type | Description |
---|---|---|
buildResponse | function |
A function that builds a response |
Promise
WhookHTTPTransaction.catch ⇒ Catch a transaction error
Kind: static property of WhookHTTPTransaction
Returns: Promise
- A promise to be resolved with the signed token.
Param | Type | Description |
---|---|---|
err | Error |
A function that builds a response |
Promise.<Object>
WhookHTTPTransaction.end ⇒ End the transaction
Kind: static property of WhookHTTPTransaction
Returns: Promise.<Object>
- A promise to be resolved with the signed token.
Param | Type | Description |
---|---|---|
response | Object |
A response for the transaction |