Launch Week Day 1: Socket for Jira Is Now Available.Learn More
Socket
Book a DemoSign in
Socket

node-http-interceptor

Package Overview
Dependencies
Maintainers
1
Versions
29
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

node-http-interceptor

node-http-interceptor

latest
Source
npmnpm
Version
0.3.0
Version published
Maintainers
1
Created
Source

Sponsor NPM version TypeScript version Node.js version Build Status - GitHub Actions

node-http-interceptor

⚡ Intercept the low-level http requests, which is helpful when you need to do logging, monitoring or instrumentation etc.

Features

  • transparent to the normal http flow without inference
    • all errors in the interceptor are silently suppressed, only logged but not thrown
    • never consume the original stream (ClientRequest or IncomingMessage) when downstream consumer is not going to read or write
  • capability of enabling or disabling the interception
  • RequestContext is a request scope container to hold any data during the request-response round-trip, which is like the concept of HttpServletRequest.getAttributes() in Java.
  • generate a requestId and request timings by default in RequestContext

Timings

timings

Usage

nodejs preload modules

npm i -g node-http-interceptor
ln -vs "$(npm root -g)" "$HOME"/.node_modules
node -r node-http-interceptor/register

hooks

import { HttpInterceptor, RequestContext } from './http-interceptor';

const interceptor = new HttpInterceptor();
interceptor.on('request.initiated', (request: ClientRequest, context: RequestContext) => {
  // do somethong to mutate request
})

interceptor.on('request.sent', (request: Request, context: RequestContext) => {
  // log the request
})

interceptor.on('response.received', (request: Request, response: Response, context: RequestContext) => {
  // log the response
})

interceptor.on('response.error', (request: Request, error: any, context: RequestContext) => {
  // log the error
})

interceptor.on('socket.error', (request: Request, error: any, context: RequestContext) => {
  // log the error
})
interceptor.enable()

stubbing

const interceptor = new HttpInterceptor();

interceptor.stub((req: Request) => ({
  statusCode: 200,
  statusMessage: 'OK',
  headers: {
    'content-type': 'text/plain',
    'x-custom-header': 'blabla'
  },
  body: Buffer.from('test')
}));

interceptor.on('response.received', (response: Response, context: RequestContext) => {
  expect(response.body.toString()).toEqual('test')
})
interceptor.enabled();

// later on
interceptor.unstub()

FAQs

Package last updated on 22 Feb 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts