| 123456789101112131415161718192021222324252627282930313233343536373839 |
- var stream = require('stream');
- var util = require('util');
- var Transform = stream.Transform;
- var HeaderHostTransformer = function(opts) {
- if (!(this instanceof HeaderHostTransformer)) {
- return new HeaderHostTransformer(opts);
- }
- opts = opts || {}
- Transform.call(this, opts);
- var self = this;
- self.host = opts.host || 'localhost';
- self.replaced = false;
- }
- util.inherits(HeaderHostTransformer, Transform);
- HeaderHostTransformer.prototype._transform = function (chunk, enc, cb) {
- var self = this;
- // after replacing the first instance of the Host header
- // we just become a regular passthrough
- if (!self.replaced) {
- chunk = chunk.toString();
- self.push(chunk.replace(/(\r\n[Hh]ost: )\S+/, function(match, $1) {
- self.replaced = true;
- return $1 + self.host;
- }));
- }
- else {
- self.push(chunk);
- }
- cb();
- };
- module.exports = HeaderHostTransformer;
|