Socket
Socket
Sign inDemoInstall

middleman-proxy

Package Overview
Dependencies
72
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.1.0 to 0.1.1

35

lib/middleman.js
var EventEmitter = require('events').EventEmitter;
var http = require('http');
var Url = require('url');
var inherits = require('util').inherits;

@@ -9,5 +10,5 @@ var Buffer = require('buffer').Buffer;

var sizeof = require('object-sizeof');
var omit = require('lodash.omit');
var Cache = require('./cache');
var WriteBuffer = require('./writeBuffer');
var Url = require('url');

@@ -57,2 +58,3 @@ /**

setHeaders: {},
ignoreHeaders: [],
cacheMethods: 'any',

@@ -117,2 +119,7 @@ followRedirect: true,

}
// convert ignoreHeaders to lower case
this.settings.ignoreHeaders = this.settings.ignoreHeaders.map(function(hdr) {
return hdr.toLowerCase();
});
};

@@ -158,2 +165,17 @@

this.emit('proxy request', req, res);
// The request module checks for `setHeader` method on pipes, and
// populates the response headers automatically. This is probably
// the most effecient way to control which headers get populated
// without another pipe or not pipeing alltogether.
var ignoreHeaders = this.settings.ignoreHeaders;
if (ignoreHeaders.length) {
var resSetHeader = res.setHeader;
res.setHeader = function(hdr) {
if (!~ignoreHeaders.indexOf(hdr.toLowerCase())) {
return resSetHeader.apply(res, arguments);
}
};
}
var proxy = this._proxy(req, uri, key);

@@ -317,3 +339,3 @@ proxy.on('error', function(err) {

response.statusCode,
response.headers,
this._omitHeaders(response.headers),
body.toBuffer()

@@ -330,2 +352,11 @@ );

/**
* Returns an object ignoring the headers declared in `options.ignoreHeaders`
* @param {Object} headers Incoming headers from proxy
* @return {Object}
*/
Middleman.prototype._omitHeaders = function(headers) {
return omit(headers, this.settings.ignoreHeaders);
};
/**
* Determine whether a request should be cached.

@@ -332,0 +363,0 @@ * @param {http.IncomingMessage} req Request

3

package.json
{
"name": "middleman-proxy",
"version": "0.1.0",
"version": "0.1.1",
"author": "Nick Pisacane <pisacanen@gmail.com>",

@@ -28,2 +28,3 @@ "description": "HTTP Proxy with content caching.",

"bytes": "^2.1.0",
"lodash.omit": "^3.1.0",
"lru-cache": "^2.7.0",

@@ -30,0 +31,0 @@ "object-assign": "^4.0.1",

@@ -113,2 +113,13 @@ # Middleman

### Ignoring Response Headers
```js
const Middleman = require('middleman-proxy');
const proxy = new Middleman({
target: 'http://some.api.com',
ignoreHeaders: [
'X-Some-Header'
]
});
```
### Request Events

@@ -138,2 +149,3 @@ ```js

* setHeaders (Object) Headers to be sent with the request, when proxied. *Default* `{}`
* ignoreHeaders (Array) Headers to be omitted from the proxy. *Default* `[]`
* cacheMethods (String|Array<String>) HTTP Methods that should be cached for,

@@ -140,0 +152,0 @@ does not cache for any omited. *Default* `'any'`

@@ -34,2 +34,8 @@ var Middleman = require('../');

});
server.get('/ignoreHeaders', function(req, res) {
res.setHeader('X-Foo', 'bar');
res.setHeader('X-Baz', 'bang');
res.json({});
});
server.listen(PROXY_PORT);

@@ -721,2 +727,28 @@

it('should ignore headers', function(done) {
var instance = SUITE.createInstance({
ignoreHeaders: [
'X-Foo'
]
})
.on('cache request', xCached);
var agent = SUITE.agent;
agent.get('/ignoreHeaders')
.expect('X-Baz', 'bang')
.end(function(err, res) {
if (err) return done(err);
should(res.headers['x-foo']).equal(undefined);
should(res.headers['X-Foo']).equal(undefined);
agent.get('/ignoreHeaders')
.expect('X-Cached', 'true')
.end(function(err, res) {
if (err) return done(err);
should(res.headers['x-foo']).equal(undefined);
should(res.headers['X-Foo']).equal(undefined);
done();
});
});
});
describe('URI', function() {

@@ -723,0 +755,0 @@ var target = 'http://test.io';

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc