hijackresponse-nobackpressure

1.0.2-patch2 • Public • Published

hijackresponse

npm version Build Status Coverage Status Dependency Status

Module that allows you to rewrite HTTP responses from middleware further down the stack, such as static providers, HTTP proxies etc.

This module is the spiritual successor to express-hijackresponse attempting to solve the same goals. The differences from the original module are primarily that the API is slightly different, there's no direct coupling to express and it supports streams2.

It's mostly useful for content filters. The original use case is injecting an inline JavaScript into all HTML responses in LiveStyle. It is also used in a series of transpiler and preprocessing middleware:

Installation

$ npm install hijackresponse

Usage

var express = require('express');
var hijackResponse = require('hijackresponse');

var app = express();

app.use(function (req, res, next) {
    hijackresponse(res, function (err, res) {
        if (err) {
            res.unhijack(); // Make the original res object work again
            return next(err);
        }

        // Don't hijack HTML responses:
        if (/^text/html(?:;$)/.test(res.getHeader('Content-Type'))) {
            return res.unhijack();
        }

        res.setHeader('X-Hijacked', 'yes!');
        res.removeHeader('Content-Length');

        res
            .pipe(transformStream)
            .pipe(res);
    });
    // next() must be called explicitly, even when hijacking the response:
    next();
});

License

This module is published under the ISC License. See the LICENCE file for additional details.

Readme

Keywords

none

Package Sidebar

Install

npm i hijackresponse-nobackpressure

Weekly Downloads

2

Version

1.0.2-patch2

License

ISC

Last publish

Collaborators

  • papandreou